删除重复条目但保留关系。

3

我有一张表格,看起来像这样:

Name | Product | Total
----  --------- ------
A       Toy       $5
A       Car       $30,000
A       Equipment $500
B       Car       $100,000

我希望能够去除重复的名称条目,但保留与产品的关系。例如:
Name | Product | Total
----  --------- ------
A       Toy       $5
        Car       $30,000
        Equipment $500
B       Car       $100,000

有什么想法吗?
3个回答

0
如果你想在 Product ='Toy' 的情况下只保留 Name,那么可以使用 Case 语句。
Select case when Product ='Toy' then Name else '' END as Name,
       Product,
       Total
From yourtable

恰好产品中的第一项是玩具,它可以是任何产品,抱歉我应该说明一下。 - Mark Manickaraj

0

试一下

WITH CTE AS (
SELECT
rownum = ROW_NUMBER() OVER (ORDER BY i.name),
i.name,i.product,i.Total
FROM yourtable i
)
SELECT
case when prev.name = cte.name
then
' '
else
cte.name
end as name,
cte.address,
cte.Total
FROM CTE
LEFT JOIN CTE prev ON prev.rownum = CTE.rownum - 1

0

我猜你想要执行 Name = '' 操作,因为你无法删除重复记录。

所以你可以在 WITH 子句中使用 ROW_NUMBER 函数,并更新 Name 字段。

;WITH C AS(
    SELECT  ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Name) AS Rn
            ,Name
            ,Product
            ,Total
    FROM yourTable
)
UPDATE C
SET Name = ''
WHERE Rn <> 1

已翻译,谢谢!对于任何正在寻找演示级别解决方案的人,您也可以使用BREAK ON [列或别名]。 - Mark Manickaraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接