SQL组按列和列值?
问题描述:
我有一个招聘表如下图所示:SQL组按列和列值?
------------------------------------------------------
| 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