Plsql 如何仅按某些行分组

Plsql 如何仅按某些行分组,plsql,group-by,Plsql,Group By,我有一些记录 ID Salary WillGroupBy Amount ---------------------------------------- 6320 100 1 15 6320 150 1 20 6694 200 0 25 6694 300 0 30 7620 400

我有一些记录

ID Salary WillGroupBy Amount ---------------------------------------- 6320 100 1 15 6320 150 1 20 6694 200 0 25 6694 300 0 30 7620 400 1 45 7620 500 1 50 如何仅根据哪个WillGroupBy=1记录进行分组

我将对薪资和金额列求和 我想得到这个结果:

ID Salary WillGroupBy Amount ---------------------------------------- 6320 250 1 35 6694 200 0 25 6694 300 0 30 7620 900 1 95 你能帮我吗

解决方案:

我通过使用这个解决方案

我想知道它是如何以另一种方式实现的。

使用MySQL,您可以做到:

SELECT ID, SUM(Salary) Salary, WillGroupBy, SUM(Amount) Amount, @row := @row + 1
FROM YourTable
JOIN (SELECT @row := 0) v
GROUP BY ID, IF(WillGroupBy = 1, -1, @row)

请用数据库标记您的问题,例如mysql、sql server、oracle等。非常感谢Barmar!但我将在Pl/sql中使用。我不会在包中使用,所以我需要一个没有任何参数的解决方案。对不起,我不知道PL/SQL,所以我不知道如何翻译。有些数据库有一个rowid函数,您可以使用它而不是@row变量。您可能需要使用CASE表达式而不是IF函数。好的,非常感谢Barmar。
SELECT ID, SUM(Salary) Salary, WillGroupBy, SUM(Amount) Amount, @row := @row + 1
FROM YourTable
JOIN (SELECT @row := 0) v
GROUP BY ID, IF(WillGroupBy = 1, -1, @row)