SQL新手问题在这里。
我有一张桌子: 表格-[产品]-下方带有列
ProductID, ProductDesc
DRILL01 Drill Bits
DRILL02 Drill Other
DRILL01 Drill Set
DRILL01 Drill Bits Set
....
希望返回第一个匹配项,例如
DRILL01 Drill Bits
DRILL02 Drill Other
我已经尝试了一个没有外观的分组方式,并且认为我可能需要一个TOP 1选项,但是似乎无法绕开它。做了大量的搜索,但是我一定错过了一些东西。
任何帮助都会很大。
答案 0 :(得分:2)
您可以使用ROW_NUMBER
:
SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER(PARTITION BY ProductId ORDER BY timestamp_col) AS r
FROM tab)
WHERE r=1;
为了获得稳定的结果,您必须决定如何获取每个ProductId
组的“第一”值。例如,通过按某种时间戳记/标识列进行排序。