oracle SQL对具有不同值行求和

xqk2d5yq  于 2023-10-16  发布在  Oracle
关注(0)|答案(3)|浏览(91)

我有一个包含重复行的简单表,我想只对具有不同值的行求和,例如在下面的表中,id(1)重复了4次,但它们是相同的,所以我希望它是不同的,id(2)也重复了,但数量和值列不同,所以我想合并它

所以我希望这个表是这样的,当我选择它:

我试着这样做,但它对所有行求和,但我只想对具有不同值的行求和:

select ID, SUM(QTY), SUM(VALUE)
FROM TABLE1
GROUB BY ID
kpbwa7wx

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
piah890a

piah890a2#

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

3bygqnnd

3bygqnnd3#

一种选择:对id列使用MINMAX这样的聚合函数,按它分组,对其他列使用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关键字,当使用关键字作为表名或列名时可能会出现问题。
可以通过以下方式重命名列:

ALTER TABLE table1 RENAME COLUMN VALUE TO YourNewColumnName

相关问题