2025年4月16日 星期三

tsql 不用unpivot 將columns轉rows

有個需求需要將多一筆資料的多欄位值轉成多列資料

之前都使用unpivot,試了一下直接用outer apply就可達成,十分好用。

其中concat 會自動處理null 為空值再串聯文字,所以也不用判斷isnull(col1,'')了。

declare @tab table (col1 nvarchar(10),col2 nvarchar(10),col3 nvarchar(10),col4 nvarchar(10))

insert into @tab values

('A','X','Y','Z'),

('B','X','Y',null),

('A','1','2','')

select distinct  col1,y.value

from @tab outer apply   (select * from string_split(concat(col2,',',col3,',',col4),',') where value > '') y

沒有留言:

張貼留言

離線安裝SSMS 22 launched extracted application exiting with result code 0x138b

SSMS 22 安裝器下載頁面 https://learn.microsoft.com/zh-tw/ssms/install/install https://aka.ms/ssms/22/release/vs_SSMS.exe 將安裝檔下載到本機,檔案好大2.5G  https:...