如何在sql中删除重复的值

时间:2014-08-05 07:29:29

标签: sql sql-server

我有一个表格,其中包含产品名称,销售率和税额等三栏。如果产品名称重复,那么我需要输出产品名称上的第二行应该是空的,并且销售费率和税额应该在每一行中都有。这意味着第一个产品名称应该再次将其重复设置为空

我的表格看起来像这样

Product Name    SalesRate   TaxAmount
Apple            100         10
Lemon             50         5
Apple            120         12.5

我需要像这样的输出

Product Name    SalesRate   TaxAmount
Apple            100         10
Lemon             50         5
                 120         12.5

1 个答案:

答案 0 :(得分:3)

您可以将CTE与ROW_NUMBER

一起使用
WITH CTE AS
(
    SELECT [Product Name], SalesRate, TaxAmount,
          RN = ROW_NUMBER () OVER (PARTITION BY [Product Name]
                                   ORDER BY [Product Name], SalesRate, TaxAmount)
    FROM dbo.TableName
)
SELECT [Product Name] = CASE WHEN RN > 1 THEN '' ELSE [Product Name] END,
       SalesRate, 
       TaxAmount
FROM CTE

而不是ORDER BY [Product Name], SalesRate, TaxAmount使用适当的订单。

以下是一个包​​含新示例数据的演示:http://sqlfiddle.com/#!3/4bf55/4/0