[英]SQL Group by column and column value?
我有一个如下的招聘表:
------------------------------------------------------
| slot_id | hired_days | qty | amt | return |
-----------|-------------|-------|-------|-----------|
| 1 | 30 | 5 | 100 | 0 |
| 1 | 30 | 15 | 300 | 0 |
| 1 | 30 | 12 | 170 | 1 |
| 1 | 25 | 13 | 180 | 0 |
| 1 | 30 | 4 | 180 | 1 |
| 2 | 30 | 15 | 300 | 0 |
------------------------------------------------------
我希望将结果按slot_id和hired_days分组,但分组仅应针对0行的返回值进行。 结果表需要显示所有分组的行并返回1个数据。 有什么办法用SQL做到这一点?
-------------------------------------------------------
| slot_id | hired_days | qty | amt | return |
|----------|-------------|--------|-------|-----------|
| 1 | 30 | 20 | 400 | 0 |
| 1 | 25 | 13 | 180 | 0 |
| 1 | 30 | 12 | 170 | 1 |
| 1 | 30 | 4 | 180 | 1 |
| 2 | 30 | 15 | 300 | 0 |
-------------------------------------------------------
您可以使用UNION
操作
SELECT slot_id,hired_days,sum(qty),sum(amt),return FROM hiring
WHERE return=0 GROUP BY slot_id,hired_days
UNION ALL
SELECT slot_id,hired_days,qty,amt,return FROM hiring WHERE return =1
试试这个查询...。
select slot_id, hired_days, sum(qty), sum(amt), return from hiring where return = 0 group by slot_id, hired_days, return union select slot_id, hired_days, qty, amt, return from hiring where return = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.