SQL 行轉列總結

2021-06-07 02:41:41 字數 993 閱讀 3528

行轉列應該使用case 【想要把某個行轉成列的列名】 when 【裡將各個列的值放進去】 then 【分組後某個值要進行彙總行】else  0 end

動態生成的話,將想要用的轉的,用selec查出來拼成以上格式就可以了;

declare @sql varchar(8000)----如果大於8000只能用程式去拼乙個sql串,而不能用sql了

select @sql=@sql+max(max( case [科目] when '通訊郵電費' then [金額] else 0 end)[科目])

1.如果 年,月,部門沒有重複的話使用max

select [年],[月],[部門]

,max( case [科目] when '通訊郵電費' then [金額] else 0 end)[通訊郵電費]

,max( case [科目] when '餐費' then [金額] else 0 end)[餐費]

,max( case [科目] when '停車過路費' then [金額] else 0 end)[停車過路費]

,max( case [科目] when '工資' then [金額] else 0 end)[工資]

from table1

group by [年],[月],[部門]

2如果年,月,部門有重複的話使用max會丟失資料,應該使用sum

select [年],[月],[部門]

,sum( case [科目] when '通訊郵電費' then [金額] else 0 end)[通訊郵電費]

,sum( case [科目] when '餐費' then [金額] else 0 end)[餐費]

,sum( case [科目] when '停車過路費' then [金額] else 0 end)[停車過路費]

,sum( case [科目] when '工資' then [金額] else 0 end)[工資]

from table1

group by [年],[月],[部門]

sql 行轉列問題

題目 下表tproduct某產品在各城市各月銷量情況 city name month no 月 qut qty 臺 杭州 9 100 杭州 10 120 上海 9 130 上海 10 140 請寫sql實現 如下查詢 city 9月銷量 10月銷量 杭州 100 120 上海 130 140 答案一...

SQL行轉列例項

sql行轉列是比較經典的問題 比如有如下資料表,有如下某一款號 表1 顏色 尺碼 庫存 紅色 s 10 紅色 m 80 白色 l 50 白色 s 60 要將上面的表轉化為如下格式 表2 顏色 s m l 紅色 10 80 0 白色 60 0 50 動態sql create table tbl 0 c...

sql 行轉列 例子

一.在行轉列時,拼結多個問題的答案,放到乙個列中顯示 create function dbo aggregatestring func code varchar 20 emp id int,store id int,biz date varchar 20 acvt id int,qst id int...