【发布时间】:2016-02-11 01:18:58
【问题描述】:
我有大约 1000 个人的数据,其中每个人可以有多个行、多个日期,并且列表示所接受的程序和一个代码。
我需要每一行都包含一个不同的日期,所以我需要从我的表中删除重复日期的行。如果有多行具有相同的日期,我需要保留具有最低代码编号的行。在多行具有相同日期和相同最低代码的情况下,我需要保留也已在程序(prog)B中的行。例如;
| ID | DATE | CODE | PROG|
--------------------------------
| 1 | 1996-08-16 | 24 | A |
| 1 | 1997-06-02 | 123 | A |
| 1 | 1997-06-02 | 123 | B |
| 1 | 1997-06-02 | 211 | B |
| 1 | 1997-08-19 | 67 | A |
| 1 | 1997-08-19 | 23 | A |
所以我想要的输出应该是这样的;
| ID | DATE | CODE | PROG|
--------------------------------
| 1 | 1996-08-16 | 24 | A |
| 1 | 1997-06-02 | 123 | B |
| 1 | 1997-08-19 | 23 | A |
我正在努力想出一个解决方案,所以非常感谢任何帮助!
微软 SQL Server 2012 (X64)
【问题讨论】:
-
我偏爱使用窗口函数并按您认为必要的列进行分区。这是一个链接,文章底部描述了该技术。可能会让你大部分时间到达那里。 simple-talk.com/sql/t-sql-programming/…
-
只是日期?如果您有不同的行 ID 但日期相同怎么办?
-
好点,每个唯一 ID 仅重复日期。因此,如果有意义的话,仍然会有重复但不在每个唯一 ID 内
-
我会使用窗口函数和 cte 来执行此操作,例如 HERE
标签: sql sql-server-2012