我有一个包含重复行的简单表,我想只对具有不同值的行求和,例如在下面的表中,id(1)重复了4次,但它们是相同的,所以我希望它是不同的,id(2)也重复了,但数量和值列不同,所以我想合并它
所以我希望这个表是这样的,当我选择它:
我试着这样做,但它对所有行求和,但我只想对具有不同值的行求和:
select ID, SUM(QTY), SUM(VALUE) FROM TABLE1 GROUB BY ID
kpbwa7wx1#
你可以这样做
SELECT ID, SUM(QTY) AS QTY, SUM(VALUE) AS VALUE FROM (SELECT ID, QTY, VALUE FROM TABLE1 GROUP BY ID, QTY, VALUE) a GROUP BY ID
piah890a2#
SELECT DISTINCT与典型的聚合函数配对可以得到你想要的:
SELECT DISTINCT
SELECT ID, SUM(QTY) AS QTY, SUM("VALUE") AS "VALUE" FROM ( SELECT DISTINCT ID, QTY, "VALUE" FROM TABLE1 ) TABLE1 GROUP BY ID
SQL Fiddle
3bygqnnd3#
一种选择:对id列使用MIN或MAX这样的聚合函数,按它分组,对其他列使用SUM(DISTINCT...):
MIN
MAX
SUM(DISTINCT...)
SELECT MIN(ID) AS ID, SUM(DISTINCT qty) AS QTY, SUM(DISTINCT VALUE) AS VALUE FROM table1 GROUP BY ID
请根据您的示例数据查看此db<>fiddle。顺便说一下,你应该重命名value列,因为这是一个SQL关键字,当使用关键字作为表名或列名时可能会出现问题。可以通过以下方式重命名列:
value
ALTER TABLE table1 RENAME COLUMN VALUE TO YourNewColumnName
3条答案
按热度按时间kpbwa7wx1#
你可以这样做
piah890a2#
SELECT DISTINCT
与典型的聚合函数配对可以得到你想要的:SQL Fiddle
3bygqnnd3#
一种选择:对id列使用
MIN
或MAX
这样的聚合函数,按它分组,对其他列使用SUM(DISTINCT...)
:请根据您的示例数据查看此db<>fiddle。
顺便说一下,你应该重命名
value
列,因为这是一个SQL关键字,当使用关键字作为表名或列名时可能会出现问题。可以通过以下方式重命名列: