如何仅按某些行进行分组

时间:2014-01-15 09:20:44

标签: 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        1            45
 7620     500        1            50

如何才能将“WillGroupBy = 1”记录分组?

(我将SUM工资和金额列) 我想得到这个结果:

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


解决方案:

SELECT ID, SUM(Salary) Salary, WillGroupBy, SUM(Amount) Amount
FROM YourTable
where WILLGROUPBY = 0
union all
SELECT ID, SUM(Salary) Salary, WillGroupBy, SUM(Amount) Amount
FROM YourTable
where WILLGROUPBY = 1
group by ID, WillGroupBy

我通过Erhan使用了这个解决方案。

我想知道它可能以另一种方式出现。

1 个答案:

答案 0 :(得分:0)

使用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)

DEMO