删除重复条目但保持关系
Remove duplicate entry but keep relationship
我有一个 table 看起来像这样:
Name | Product | Total
---- --------- ------
A Toy
A Car ,000
A Equipment 0
B Car 0,000
等...
我想删除重复的名称条目,但保留与产品示例的关系:
Name | Product | Total
---- --------- ------
A Toy
Car ,000
Equipment 0
B Car 0,000
有什么想法吗?
如果你只想在 Product ='Toy'
时保留 Name
然后使用 Case
语句
Select case when Product ='Toy' then Name else '' END as Name,
Product,
Total
From yourtable
试试这个
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
我假设你想Name = ''
因为你不能删除重复的记录。
因此您可以使用 ROW_NUMBER
function inside a WITH
子句并更新 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
我有一个 table 看起来像这样:
Name | Product | Total
---- --------- ------
A Toy
A Car ,000
A Equipment 0
B Car 0,000
等...
我想删除重复的名称条目,但保留与产品示例的关系:
Name | Product | Total
---- --------- ------
A Toy
Car ,000
Equipment 0
B Car 0,000
有什么想法吗?
如果你只想在 Product ='Toy'
时保留 Name
然后使用 Case
语句
Select case when Product ='Toy' then Name else '' END as Name,
Product,
Total
From yourtable
试试这个
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
我假设你想Name = ''
因为你不能删除重复的记录。
因此您可以使用 ROW_NUMBER
function inside a WITH
子句并更新 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