表結構
N_ID V_KHMC V_SJR V_KWID N_FS
1 a單位 張三 a刊物 1
2 a單位 張三 b刊物 2
3 a單位 a刊物 3
4 b單位 李四 a刊物 1
5 b單位 李四 c刊物 2
6 b單位 b刊物 1
....
想得出統計表
V_KHMC V_SJR a刊物 b刊物 c刊物
a單位 張三 1 2
a單位 3
b單位 李四 1 2
b單位 1
求大神給個sql
uj5u.com熱心網友回復:
a刊物 b刊物 c刊物是固定的這三個嗎 ? 還是有更多個?
uj5u.com熱心網友回復:
又是行轉列,這種帖子老多了,找一下以前的帖子。我覺得我自己都已經回過好幾個了uj5u.com熱心網友回復:
多個,是另一個表維護的資料
uj5u.com熱心網友回復:
select V_KHMC,
V_SJR,
max(case when V_KWID='a刊物' then N_FS end) a刊物,
max(case when V_KWID='b刊物' then N_FS end) b刊物,
max(case when V_KWID='c刊物' then N_FS end) c刊物
from tab
group by V_KHMC,V_SJR;
uj5u.com熱心網友回復:
select t.v_khmc,t.v_sjr,
(sum(case t.v_kwid when 'a刊物' then t.n_fs else null end)) a刊物 ,
(sum(case t.v_kwid when 'b刊物' then t.n_fs else null end)) b刊物 ,
(sum(case t.v_kwid when 'c刊物' then t.n_fs else null end)) b刊物 ,
from table1 t
group by t.v_khmc,t.v_sjr
order by t.v_khmc
試試看
uj5u.com熱心網友回復:
大神,如果V_KWID是從另一個表維護的資料,動態的V_KWID怎么寫呢
uj5u.com熱心網友回復:
如果值不是太多,比較直觀的辦法是把所有值CASE WHEN一遍
uj5u.com熱心網友回復:
select * from t_test pivot(sum(n_fs) sumsal/*, avg(salary) avgsal */for(V_kwid) in ( 'a刊物','b刊物','c刊物'));轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/112132.html
標籤:開發
下一篇:關于hibernate 新手求教
