sql行轉列pivot
① 怎樣實現sql行轉列
--試一試。。。
createtable#test
(
姓名nvarchar(10),
學號nvarchar(10),
題號nvarchar(10),
答案nvarchar(10)
)
go
insertinto#test
select'張三','001','1','A'unionall
select'張三','001','2','C'unionall
select'李四','002','1','B'unionall
select'李四','002','2','D'
select*from#test
dECLARE@sqlVARCHAR(max)
SET@sql=''
SELECT@sql=@sql+',['+題號+']'FROM#testGROUPBY題號
SET@sql=STUFF(@sql,1,1,'')
SET@sql='select*from#testpivot(max(答案)for題號in('+@sql+'))a'
PRINT@sql
exec(@sql)
② sql 行轉列
SELECT
*
FROM ( 你的SQL 放在這裡面
) bb PIVOT( MAX(timePoint) FOR PName( [pm2.5], [nox], [.....] ) ) AS pvt
[pm2.5],這種你有一個要列一個。
③ SQL語句行轉列
根據樓主的描述,特為樓主總結如下,在SqlServer裡面行列轉換的語法一般是: select 欄位, sum(case when 要轉換的行單元格的欄位名='行欄位內容' then 聚合的欄位名 end ) as 自定義的列標題1 from 表的名字 group by 欄位(注意,分組聚合就是根據這個欄位來的,具體到樓主的問題,這里的欄位就應該是org_id) 如果有多個列,之間用逗號隔開就可以了,最後一個參數和from之間不要用逗號。 具體到樓主的顯示效果就可以這樣寫了。代碼參考如下: Select org_id , sum(case when channel ='團險' then PREM end) As '團險保費' , sum(case when channel ='個險' then PREM end) As '個險保費 From 你的表名 Group By org_id
④ sql關於pivot行列轉換的問題
--樓主 這個是典型的行轉列
--腳本如下
select 星期一 , 星期二, 星期三, 星期四, 星期五, 星期六 , 星期日
from test pivot (sum(income) for week in(星期一 , 星期二, 星期三, 星期四, 星期五, 星期六 , 星期日)) as tt
--如果解決了樓主的問題 請採納
--有什麼疑問可以隨時找我
⑤ sql server 行轉列
創建測試表
createtabletest
(_keyvarchar(10),
_valuevarchar(10),
idint)
insertintotestvalues('ceshi','測試值',10)
insertintotestvalues('ceshi','測試值',11)
insertintotestvalues('ceshi2','測試值2',11)
執行
declare@sqlvarchar(4000)
set@sql='selectid'
select@sql=@sql+',max(case_keywhen'''+[_key]+'''then[_value]end)as
['+_key+']'
from(selectdistinct_keyfromtest)asa
select@sql=@sql+'fromtestgroupbyid'
exec(@sql)
結果
額,我那個第三條數據id寫錯了,不過方法還是這個
⑥ Sql server關於PIVOT行轉列的問題
select SUM(行的值),ave(行的值) 【,需要檢索的屬性】【,需要檢索的屬性】...
from 表名
where 條件表達式
group by 分組屬性;