查看所选列

时间:2016-03-09 19:21:07

标签: sql-server-2008

我有一个包含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:

所有行在名称和描述中都是相同的,因此将返回两行。

任何有用的帮助

1 个答案:

答案 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