我不熟悉SQL编程,我知道之前有关于删除重复的帖子,但这有点复杂,我还没有在网上找到解决方案。
要求:我有一个表Positions
,其中包含A
,B
,C
,total
,date
列。
A, B, C
的值全部匹配时,才会将两行视为重复。date
不为空的行,并通过总结total
来更新该行的total
值所有重复行; 所选的SQL是SQL Server。
请帮忙。约翰
答案 0 :(得分:0)
可以尝试以下方式更新表格。
update POSITIONS as a
set total = (select sum(total) from positions as b
where a.col1 = b.col1
and a.col2 = b.col2
and a.col3 = b.col3)
WHERE a.date is not null
如果您不希望将包含日期的行总数包含在总和中,则必须相应地调整查询。
我们提出了以下 假设 ,因为您的问题不是很明确。
1)只有一行非空日期 2)如果所有可用日期都为空,则无需更新
下次,尝试尽可能多地提供您的问题信息,以便我们更好地指导。
问候。
答案 1 :(得分:0)
首先,您计算SUM
总值Group by A,B,C
Where date not null
。
然后,你update total = SUM (calculated step one)
。
最后,你select DISTINCT A,B,C,total
试试这段代码:
UPDATE POSITIONS AS P
SET total = (SELECT SUM(total)
FROM POSITIONS
WHERE A = P.A
AND B = P.B
AND C = P.C)
WHERE date IS NOT NULL
SELECT DISTINCT A,B,C,total
FROM POSITIONS
WHERE date IS NOT NULL
答案 2 :(得分:0)
{{1}}