use*_*516 1 sql t-sql sql-server
我有一个复杂的SQL查询,返回大约10000行.在我的查询中,我有一个OrderNr,很多行包含相同的OrderNr.现在我想只获取具有相同OrderNr的前1行.这仅适用于OrderNr列,不适用于任何其他列.我的意思是我在其他一些列中也有相同的值,但我想要所有的行.
在这里,我为您做了一些简单的例子
目标是得到输出
1,Bruno,Dan
2,Johnson,Lars
4,Jordan, Derreck
5,Johnson,Peter
Run Code Online (Sandbox Code Playgroud)
这是Firstname和我的OrderNr相同
我该怎么做呢?
您可以按orderNumbers进行分区,并按ID对订单进行排名.仅选择rownumber为1的行时,您将获得预期的结果.
;WITH orders AS (
SELECT *,
Row_Number() over (PARTITION BY OrderNr ORDER BY <ID>) rn
FROM T
)
SELECT * FROM orders WHERE rn=1
Run Code Online (Sandbox Code Playgroud)
随你的小提琴:http://sqlfiddle.com/#!6/07780/11