Re: [SQL ] 欄位字串分離統計的問題
declare @cols nvarchar(max)
-- 所有可能字串列表
;with tb1 as (
select *
from (values
('a1'),('a2'),('a3'),
('b1'),('b2'),('b3'),
('c1'),('c2'),('c3'),
('z1'),('z2'),('z3')
)t(s)
)
-- 組動態 pivot 所需的 in list
select @cols = replace(rtrim((select QUOTENAME(s) + ' ' from tb1
for xml path(''))),' ',',')
-- 測資
;with tb1 as (
select xml = convert(xml,'<item>' + replace(string,',','</item><item>') +
'</item>')
from (values(1,'a1,b1,c1'),(2,'a2,c1'),(3,'d3'),(4,'a2,b1'),(5,'z1,z2')
)t(seq,string)
)
-- 切割字串
select s
into #t
from tb1 cross apply (
select col.value('.', 'nvarchar(max)')
from xml.nodes('/item') as tbl(col)
) t(s)
-- 執行結果
declare @sql nvarchar(max)
set @sql = replace('
select * from #t
pivot (
count(s) for s in ($cols)
) as pvt
','$cols',@cols)
exec(@sql)
drop table #t
※ 引述《otherman (總經理)》之銘言:
: 資料庫名稱: MSSQL
: 資料庫版本: 2014
: 內容/問題描述:
: table a
: seq string
: 1 a1,b1,c1
: 2 a2,c1
: 3 d3
: 4 a2,b1
: 5 z1,z2
: 將string欄位分離後計算數量,然後產出如下統計表
: a1 a2 a3 b1 b2 b3 c1 c2 c3...z1 z2 z3
: =====================================
: 1 2 0 2 0 0 2 0 0 1 1 0
: 我用pivot +string_spilt 來select做出來的結果都不是我想要的,因為欄位不確定
: 請問先進們有相關的統計經驗可以指點一下嗎?謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.26.80.10 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1614261463.A.582.html
推
02/26 14:45,
3年前
, 1F
02/26 14:45, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章