在 SQL 中正确分组
Getting Group by right in SQL
我有一个 table,里面有数据和历史记录。
Date (d/m/y)
fieldId (int)
metaId (int)
Value (Currency)
2/1/2020
1
3
1234
3/1/2020
1
3
1233
4/1/2020
1
3
1200
1/1/2020
2
3
1666
3/1/2020
2
3
1555
从上面 table 如果我执行查询:
SELECT * FROM table WHERE fieldId IN( 1,2);
我应该只得到:
| 4/1/2020 | 1 | 3 | 1200 |
| 3/1/2020 | 2 | 3 | 1555 |
我知道我将不得不使用子查询来 return 只有最新的数据,但我无法解决,请有人帮忙。
使用ROW_NUMBER()
我们可以尝试:
SELECT TOP 1 WITH TIES *
FROM yourTable
WHERE fieldId IN (1, 2)
ORDER BY ROW_NUMBER() OVER (PARTITION BY fieldId ORDER BY Date DESC);
我有一个 table,里面有数据和历史记录。
Date (d/m/y) | fieldId (int) | metaId (int) | Value (Currency) |
---|---|---|---|
2/1/2020 | 1 | 3 | 1234 |
3/1/2020 | 1 | 3 | 1233 |
4/1/2020 | 1 | 3 | 1200 |
1/1/2020 | 2 | 3 | 1666 |
3/1/2020 | 2 | 3 | 1555 |
从上面 table 如果我执行查询:
SELECT * FROM table WHERE fieldId IN( 1,2);
我应该只得到:
| 4/1/2020 | 1 | 3 | 1200 |
| 3/1/2020 | 2 | 3 | 1555 |
我知道我将不得不使用子查询来 return 只有最新的数据,但我无法解决,请有人帮忙。
使用ROW_NUMBER()
我们可以尝试:
SELECT TOP 1 WITH TIES *
FROM yourTable
WHERE fieldId IN (1, 2)
ORDER BY ROW_NUMBER() OVER (PARTITION BY fieldId ORDER BY Date DESC);