如何用一个SQL实现图中的答案123456!!!!!!!!!!!!!!!!

图片说明

select t2.dname, sum(case t1.mon when '一月份' then t1.yj end) as '一月份', 
sum(case t1.mon when '二月份' then t1.yj end) as '二月份' 
from table1 t1 join table2 t2 on(t1.dep=t2.dep) group by t1.dep;

利用case when 行转列,希望可以帮到你....

不太清楚mysql怎么写,不过oracle可以写成下面这样:

SELECT
    TABLE2.DNAME DNAME,
    SUM(DECODE(MON, '一月份', YJ, '0')) 一月份,
    SUM(DECODE(MON, '二月份', YJ, '0')) 二月份
FROM
    TABLE1
LEFT JOIN TABLE2 ON
    TABLE1.DEP = TABLE2.DEP
GROUP BY
    TABLE2.DNAME;

SELECT
table2.dname,
(
SELECT
yj
FROM
table1 t1
WHERE
t1.dep = table2.dep
AND t1.mon = '一月份'
) 一月份,
(
SELECT
yj
FROM
table1 t1
WHERE
t1.dep = table2.dep
AND t1.mon = '二月份'
) 二月份
FROM
table2
LEFT JOIN table1 ON table1.dep = table2.dep
GROUP BY
dname;

seleect table2.dname,
sum(case table1.mon when '一月份' then table1.mon) end as '一月份',
sum(case table1.mon when '二月份' then table1.mon) end as '二月份'
from table1
left join table2 on table2.dep=table1.dep
group by table2.dname;