作为新手 sql 用户:
我有一个简单的表,每天晚上存储一些记录。表:
表:T1
+----+-----+----+-----------+------------+
| Id | A | AB | Value | Date |
+----+-----+----+-----------+------------+
| 1 | abc | I | -48936.08 | 2013-06-24 |
| 2 | def | A | 431266.19 | 2013-06-24 |
| 3 | xyz | I | -13523.90 | 2013-06-24 |
| 4 | abc | A | 13523.90 | 2013-06-23 |
| 5 | xyz | I | -13523.90 | 2013-06-23 |
| 6 | def | A | 13523.90 | 2013-06-22 |
| 7 | def | I | -13523.90 | 2013-06-22 |
+----+-----+----+-----------+------------+
我想获取 A、AB 列的所有值,A 列上最新日期的值在 AB = I 上过滤
基本上结果应该是这样的:
+----+-----+----+-----------+------------+
| Id | A | AB | Value | Date |
+----+-----+----+-----------+------------+
| 1 | abc | I | -48936.08 | 2013-06-24 |
| 3 | xyz | I | -13523.90 | 2013-06-24 |
| 7 | def | I | -13523.90 | 2013-06-22 |
+----+-----+----+-----------+------------+
我曾尝试在同一张表上两次使用内部联接,但未能得出正确的结果。
如有任何帮助,我们将不胜感激。
谢谢:)
最佳答案
这将适用于 sqlserver 2005+
;WITH a as
(
SELECT id, A,AB, Value, Date
, row_number() over (partition by A order by Date desc) rn
FROM t1
WHERE AB = 'I'
)
SELECT id, A,AB, Value, Date
FROM a WHERE rn = 1
关于sql-server - 使用聚合函数在同一张表上进行两次内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951844/