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;