我已经在这里问了一个question但是它有点改变了一个
FirstName LastName PayScale
----------- ------------ ---------------
Alice,Lisa simons,Jack 100000
我希望看到这样的结果
FirstName LastName PayScale
----------- ------------ ---------------
Alice simons 100000
Lisa Jack 100000
firstname的第一个值和lastname的第一个值将成为一个单独的行。总之要用逗号分隔多列
答案 0 :(得分:1)
正如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