在 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);