sql的行轉列 PIVOT 有感

2021-10-23 04:08:13 字數 981 閱讀 1020

今天在論壇遇到兩個問題。

如下:問題一

問題二都是行轉烈的動態實現。

動態生成如下sql語句

select * from (select [分類],[轉換列],[求和列])as a pivot(sum([求和列]) for a.[轉換列] in ([值1],[值2]))as b
比如問題二:

測試資料

if(object_id('tempdb..#test1')is not null) drop table #test1

select * into #test1 from

( select '3.5' 班級,'t1' name,'v1' 科目,100 成績 union all

select '3.5' 班級,'t2' name,'v1' 科目,090 成績 union all

select '3.5' 班級,'t3' name,'v2' 科目,080 成績 union all

select '3.6' 班級,'t4' name,'v1' 科目,070 成績 union all

select '3.6' 班級,'t5' name,'v3' 科目,060 成績 union all

select '3.6' 班級,'t6' name,'v2' 科目,050 成績)as a

declare @sql1 nvarchar(max);

select @sql1=(select stuff((select distinct ','+科目 from #test1 for xml path('')),1,1,''))

select @sql1='select * from (select 班級,科目,成績 from #test1) as a pivot(sum(成績) for a.科目 in ('+@sql1+'))as b'

exec(@sql1)

望於你有助!

sql 行轉列使用pivot

select from select 商品名稱,銷售數量,月份 from tb helenzhou as t1 被行轉列的字段先在這裡列出來 pivot sum 銷售數量 for 月份 in 1 2 as t2 goup by 除了銷售數量和月份之外的的被上面列出來的其他字段 privot sum ...

PIVOT函式,行轉列

pivot函式的格式如下 pivot 聚合函式 聚合列值 for 行轉列前的列名 in 行轉列後的列名1 行轉列後的列名2 行轉列後的列名3 行轉列後的列名n select from shoppingcart as c pivot count totalprice for week in 1 2 3...

行轉列 pivot 的應用

碰上了行轉列的問題,想起了 pivot,我們先看看 pivot 是什麼 pivot 通過將表示式某一列中的唯一值轉換為輸出中的多個列來旋轉錶值表示式,並在必要時對最終輸出中所需的任何其餘列值執行聚合 旋轉?不就是行轉列嗎?再看看語法 以下是帶批註的 pivot 語法。select 非透視的列 第乙個...