这是数据示例:
ID Value NumPeriod
------------------------
1681642 596.8 2
1681642 596.8 3
1681663 445.4 2
1681663 445.4 3
1681688 461.9 3
1681707 282.2 3
1681724 407.1 3
1681743 467 2
1681743 467 3
1681767 502 3
我想按 [ID] 进行分组,并仅采用每个组内 [Value] 的不同值,并根据 [NumPeriod] 获取“第一个”不同的 [Value]。所以结果看起来像这样:
ID Value NumPeriod
-------------------------
1681642 596.8 2
1681663 445.4 2
1681688 461.9 3
1681707 282.2 3
1681724 407.1 3
1681743 467 2
1681767 502 3
所以我认为这样的事情会起作用,但没有运气:
select
ID, distinct(Value), NumPeriod
from
MyTable
group by
ID, Value, NumPeriod
order by
ID, NumPeriod
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
您可以使用排名函数和 CTE:
WITH CTE AS
(
SELECT ID, Value, NumPeriod,
RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NumPeriod ASC)
FROM MyTable
)
SELECT ID, Value, NumPeriod
FROM CTE
WHERE RN = 1
ORDER BY ID, Value
关于sql - SQL Server 2014 中仅分组后的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848143/