【发布时间】:2017-08-03 08:02:55
【问题描述】:
我有这样的桌子
TABLE1
DATE NAME PRODUCT VERSION Colour SIZE ID
2017-08-03 01:30:20.000 Bob Mouse 12 Pink 3 461
2017-08-03 01:30:20.000 Bob Mouse 12 Pink 3 446
2017-08-03 01:30:20.000 Bob Mouse 13 Pink 3 487
2017-08-03 01:30:20.000 Bob Honey 6 Red 5 476
2017-08-03 01:30:20.000 Bob Honey 6 Blue 5 774
2017-08-03 01:30:20.000 Bob Shoe 6 Black 5 487
2017-08-03 01:30:20.000 Bob Dog 5 Black 7 1874
2017-08-03 01:30:20.000 Bob Dog 5 Black 7 999
2017-08-03 01:30:20.000 Bob Pet 689 Red 9 855
2017-08-02 01:30:20.000 Eva Mouse 12 Pink 3 461
2017-08-02 01:30:20.000 Eva Mouse 12 Pink 3 446
结果应该是这样的:
TABLE1
DATE NAME PRODUCT VERSION Colour SIZE ID
2017-08-03 01:30:20.000 Bob Mouse 12 Ping 3 446
2017-08-03 01:30:20.000 Bob Mouse 13 Ping 3 487
2017-08-03 01:30:20.000 Bob Honey 6 Red 5 476
2017-08-03 01:30:20.000 Bob Shoe 6 Black 5 487
2017-08-03 01:30:20.000 Bob Dog 5 Black 7 1874
2017-08-03 01:30:20.000 Bob Pet 689 Red 9 855
2017-08-02 01:30:20.000 Eva Mouse 12 Pink 3 446
我最感兴趣的是:Product AND Version
如果不同,则应删除包含相同PRODUCT AND VERSION 的行
问题在于ID 列,我总是有不同的ID 数字,但有不同的NAME 我有相同的ID
【问题讨论】:
-
表格有 100000 行。这是事情的例子。
-
select * from (select row_number()over(partition by NAME,PRODUCT,VERSION order by ID desc) rn,* from.. ) a where rn = 1 -
如果日期、名称、颜色或大小也不同怎么办?
-
所以你不关心ID的值?你用
ID=461删除(Mouse|12)行,但用ID=446保留两条这样的记录 -
Zohar Peled- 保留名称、产品和版本。之后是 Group By 和 COUNT。
标签: sql database sql-server-2008