簡體   English   中英

如果一列包含逗號分隔的值,請分別制作單獨的一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM