[英]Make a separate row respectively if a column contains comma-separated value
我已經在這里問了一個問題 ,但是有點改變了
FirstName LastName PayScale
----------- ------------ ---------------
Alice,Lisa simons,Jack 100000
我想看這樣的結果
FirstName LastName PayScale
----------- ------------ ---------------
Alice simons 100000
Lisa Jack 100000
名字的第一個值和姓氏的第一個值將分開一行。 總之想用逗號分隔多列
正如GarethD所說,您應該規范化數據庫。 這只是一個解決方法
create table #test (FirstName varchar(100),LastName varchar(100),PayScale int)
insert #test values
('Alice,Lisa','simons,Jack',100000)
SELECT FirstName,
LastName,
b.PayScale
FROM (SELECT Split.a.value('.', 'VARCHAR(100)')FirstName,
PayScale,
Row_number()
OVER(
ORDER BY (SELECT 1)) rn
FROM (SELECT PayScale,
Cast ('<M>' + Replace(FirstName, ',', '</M><M>')
+ '</M>' AS XML) AS FirstName
FROM #test) AS A
CROSS APPLY FirstName.nodes ('/M') AS Split(a))fst
JOIN (SELECT Split.a.value('.', 'VARCHAR(100)') LastName,
PayScale,
Row_number()
OVER(
ORDER BY (SELECT 1)) rn
FROM (SELECT PayScale,
Cast ('<M>' + Replace(LastName, ',', '</M><M>')
+ '</M>' AS XML) AS LastName
FROM #test) AS A
CROSS APPLY LastName.nodes ('/M') AS Split(a)) b
ON fst.rn = b.rn
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.