在规范化数据时获取 DISTINCT 公司信息
Posted
技术标签:
【中文标题】在规范化数据时获取 DISTINCT 公司信息【英文标题】:Getting DISTINCT company info while normalizing data 【发布时间】:2019-02-23 23:40:13 【问题描述】:我正在规范化我在一个平面文件中获得的一些数据,其中公司和联系信息混合在一起,如下所示:
company_id | company_name | person_id | first_name | last_name | sic_code
123 | "Acme, Inc." | 111 | "John" | "Smith" | 54789
123 | "Acme, Inc." | 222 | "Jane" | "Doe" | 54789
234 | "Global, LLC" | 333 | "James" | "Brown" | 94574
所以,我希望我的 SQL 语句返回如下所示的唯一公司信息:
123 | "Acme, Inc." | 54789
234 | "Global, LLC" | 94574
我尝试了以下方法,但仍然得到重复的数据。例如,Acme, Inc. 仍然多次出现。
SELECT DISTINCT company_id, company_name, sic_code
FROM MyTable
ORDER By company_id
我如何不仅获得 DISTINCT
公司 ID,而且获得所有独特公司的扩展数据?
【问题讨论】:
在这种情况下不应该,你能举一个例子来说明你得到了什么吗?我猜你得到的“重复”是由于列值的某种差异。因此,例如,一个值中可能有额外的空格,或者拼写不同。因此,您可能需要先对列进行修剪,或检查拼写差异。 对于您提供的示例数据,您将获得您要求的输出。所以这里有一些无法解释的东西。数据是如何导入的? 【参考方案1】:这可行:
select company_id, company_name, sic_code from (
select
company_id,
company_name,
sic_code,
row_number() over (partition by company_id order by company_id) rn
from tbl
) t
where rn = 1
【讨论】:
以上是关于在规范化数据时获取 DISTINCT 公司信息的主要内容,如果未能解决你的问题,请参考以下文章
MS Access 2010:获取(Windows)阻止数据库的用户