ZYBH ZYMC BH MC BH2 MC2 BH3 MC3 BZ(补助)
0001 值班 101 张三 102 李四 103 王五 100
0002 参加扫雪 102 李四 103 王五 空 空 50
像上面这样的记录,我想得到下面这样的记录,怎么样做到呢,有时候人员编号和名称可以是空值。
BH MC BZ(补助)
101 张三 100
102 李四 150
103 王五 150
我想统计成这样的记录,咋么才能做到呢?
------解决方案--------------------
select
bh
,mc
,sum(bz)
from (
select bh,mc,bz from table union
select bh2,mc2,bz from table union
select bh3,mc3,bz from table
)
group by
bh
,mc
------解决方案--------------------
首先必须把三列通过union all合并为一列,剩下的就好办了。sql语句如下所示:
--sql语句
SELECT d.bh,d.mc,SUM(d.bz) "BZ(补助)" FROM
(SELECT t.bh bh, t.mc mc,t.bz bz FROM test_a t
UNION ALL
SELECT t.bh2 bh, t.mc2 mc,t.bz bz FROM test_a t
UNION ALL
SELECT t.bh3 bh, t.mc3 mc,t.bz bz FROM test_a t) d
WHERE d.bh IS NOT NULL
GROUP BY d.bh,d.mc
ORDER BY d.bh