我有以下数据:
cust subject date
Cust1 Subject1 2010-12-31 21:59:59.000
Cust1 Subject1 2010-12-31 21:59:59.000
Cust4 Subject3 2011-02-27 21:59:59.000
Cust5 Subject1 2010-10-31 21:59:59.000
Cust5 Subject2 2010-10-31 21:59:59.000
Cust6 Subject2 2010-10-31 21:59:59.000
Cust6 Subject2 2010-12-31 21:59:59.000
我需要实现以下目标:
查询结果应为:
cust subject date
Cust1 Subject1 2010-12-31 21:59:59.000
Cust4 Subject3 2011-02-27 21:59:59.000
Cust5 Subject1 2010-10-31 21:59:59.000
Cust5 Subject2 2010-10-31 21:59:59.000
Cust6 Subject2 2010-12-31 21:59:59.000
任何人都可以帮我吗?
我设法完成了2个要求,但不是全部3个。
答案 0 :(得分:5)
SELECT cust, subject, max([date]) FROM myTable GROUP BY cust, subject;
你真的没有名为date
的专栏,对吗? date
是一个保留字,这就是为什么在上面的查询中必须用方括号括起来。
答案 1 :(得分:0)
使用ROW_NUMBER() - 如果你之前没有使用过这个和其他分区函数,那么我绝对可以建议你查看它们(特别是ROW_NUMBER())有很多用途。
SELECT cust, subject, date
FROM (
SELECT cust, subject, date, ROW_NUMBER() OVER (PARTITION BY cust, subject ORDER BY date DESC) AS RN
FROM <your table>
) SubQuery
WHERE SubQuery.RN = 1
答案 2 :(得分:0)
select cust, subject, max(date) from table group by cust, subject