【发布时间】:2013-10-26 15:38:47
【问题描述】:
使用以下数据,如何编写 SQL 服务器查询以仅获取下面标有“X”的记录?基本上,我想要每组相似记录的 MAX 日期记录。下面有两组;第一个只有 KEY1 中的数据,第二个在 KEY1 和 KEY2 中都有数据。我尝试使用 OVER 语句,但可以得到我需要的东西。谢谢。
日期------KEY1-----KEY2
01-Jan......abc.............NULL
02-Jan......def............NULL 'X'
12-2月......abc............123
2 月 14 日......abc............456 'X'
所以这里用更真实的数据集重新表述问题。
行日期率 Key1 Key2 Key3 1 01-1 月 150 12345 2 05-1月155 12345 3 160 年 1 月 1 日 12345 J100 4 07-2月 170 12345 J100 5 170 年 1 月 9 日 12345 K200 6 150 年 1 月 14 日 12345 J100 ABC 7 175 年 1 月 23 日 12345 J100 ABC我想要获取的行是 2、4、5 和 7,因为它们各自代表三个键列的每个唯一组合的最大日期。希望这更有意义。谢谢。
【问题讨论】:
-
基本上,你想要一个查询 max(date) 并按键 1 分组,对吧??
-
一组是在 key1 中使用 'abc' 的三行 - 而另一组是在 key1 中使用 'def' 的单行吗?
-
我不应该使用 'abc' 作为 KEY1 的第四行值,因为它混淆了问题。记录按它们是否仅包含 KEY1 中的值或同时包含 KEY1 和 KEY2 进行分组。所以在示例中,记录 1 和 2 是 group1,记录 3 和 4 是 group 2。
-
我想我搞砸了这个数据示例,所以问题是错误的。我会尽快用正确的数据再试一次,并改写我的问题
-
这是我在面试时经常问的问题之一,当人们来声称他们知道 SQL =)
标签: sql sql-server