Sql server 使用聚合函数在同一个表上进行两次内部联接
作为sql新手用户: 我有一个简单的表格,每天晚上储存一些记录。表: 表:T1Sql server 使用聚合函数在同一个表上进行两次内部联接,sql-server,tsql,Sql Server,Tsql,作为sql新手用户: 我有一个简单的表格,每天晚上储存一些记录。表: 表:T1 +----+-----+----+-----------+------------+ | Id | A | AB | Value | Date | +----+-----+----+-----------+------------+ | 1 | abc | I | -48936.08 | 2013-06-24 | | 2 | def | A | 431266.19 | 2013-06-
+----+-----+----+-----------+------------+
| 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的所有值,在AB=I上过滤的列A上最新日期的值
基本上,结果应该如下所示:
+----+-----+----+-----------+------------+
| 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 |
+----+-----+----+-----------+------------+
我曾两次尝试在同一个表上使用内部联接,但都没有得到正确的结果
任何帮助都将不胜感激
谢谢:)这将适用于SQLServer2005+
;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
哦,天哪,太慢了,被同样的回答打败了!这里的网络礼仪是什么?我应该删除我的帖子吗?
; WITH x AS (
SELECT id
, a
, ab
, "value"
, "date"
, Row_Number() OVER (PARTITION BY a ORDER BY "date" DESC) As row_num
FROM your_table
WHERE ab = 'I'
)
SELECT *
FROM x
WHERE row_num = 1