有個需求需要將多一筆資料的多欄位值轉成多列資料
之前都使用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
沒有留言:
張貼留言