我在MS SQL 2005中有一个从Access数据库导入的大型表(60列,150万条记录)非规范化数据。我的任务是规范化并将这些数据插入到我们的数据模型中。
我想创建一个使用分组的查询,例如“customer_number”,并返回一个结果集,该结果集只包含每个customer_number不相同的列。我不知道它是否可能,但如果是的话会有很大的帮助。
编辑:如果我的表有3列(cust_num,cust_name_cust_address)和5条记录
|cust_num|cust_name|cust_address
|01 |abc |12 1st street
|02 |cbs |1 Aroundthe Way
|01 |abc |MLK BLVD
|03 |DMC |Hollis Queens
|02 |cbs |1 Aroundthe Way
来自我所需查询的结果应该只是来自cust_num和cust_name的数据,因为cust_address对于该cust_num分组具有不同的值。 cust_num有许多地址,但只有一个cust_name。
有人能指出我正确的方向吗?
吉姆
答案 0 :(得分:2)
WITH q AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY col1, col2, col3, … ORDER BY id) AS rn
FROM mytable
)
SELECT *
FROM q
WHERE rn = 2
这将仅选择PARTITION BY
子句中列出的所有列上具有重复项的行(事实上,如果有的话,它将选择第一个副本)。
答案 1 :(得分:0)
不,这不可能完成