我有一个包含6列的表,其中列出了订单行。 列是Order,Orderline,ProductName,Description,UpdateDate,Location。
我想要做的是查看前4列的值(order,Line,ProductName,description)。
如果这四行中的行不相同,我想返回 订单,行,名称,描述和更新日期。
如果他们是相同的我想 只返回一行(第一个或最后一个)。
Order LineNumber ProductName description UpdateDate Location
Order1 1 a1 b1 d1 n
Order1 1 a1 b1 d2 m
Order1 1 a3 b3 d5 L
Order2 1 a1 b1 d3 o
Order2 2 a2 b2 d4 m
我希望结果是:
Order LineNumber ProductName description UpdateDate Location
Order1 1 a1 b1 d1 n
Order1 1 a3 b3 d5 L
Order2 1 a1 b1 d3 o
Order2 2 a2 b2 d4 m
对于Order1:
第1行重复3次。 三个ProductName a1中的2个,并且描述b1是相同的,因此将返回这两个中的一个。 三个productName a3中的1次和描述b3是唯一的,因此也将返回此行。
对于Order2:
所有行在名称和描述中都是相同的,因此将返回两行。
任何有用的帮助
答案 0 :(得分:0)
您可以使用窗口功能
SELECT *
FROM
(SELECT *,
ROW_NUMBER() OVER (PARTITION BY [Order], LineNumber, ProductName, [DESCRIPTION] ORDER BY UpdateDate) AS RowNum
FROM YourTable) DerivedTable
WHERE RowNum = 1