如何將CallTraversalLog
列的值分隔爲每行數據。結果集不能包含任何重複項將不同的varchar數據從一列拆分爲多個行
SeqNum CallId DNI CallTraversalLog
94329 688 29636 CUSTSEG
94329 688 29636 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;TPINCHANGE
94332 696 29636 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;TPINCHANGE
94333 699 29636 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;CRCENROLL
94333 699 29636 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;CRCENROLL
94333 702 29636 CUSTSEG;CARDMNU;CRC;CRCBISOA;CRCBI
94334 703 29636 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;CRCENROLL
94334 703 29636 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;CRCENROLL
94334 706 29636 CUSTSEG;CARDMNU;CRC;CRCBISOA;CRCBI
94336 710 29636 CUSTSEG;PHPM;PBLOGIN;PBMENU
94340 714 29636 CUSTSEG;PHPM;PBLOGIN;PBMENU;PBBI;PBLST3
我現在迷路了,因爲我不知道該怎麼做。
結果應該是這樣的:
Code
CUSTSEG
PHPM
PBLOGIN
PBBI
PBLST3
CARDMNU
CRC
CRCACTIVATION
CRCENROLL
CRCBISOA
CRCBI
TPINCHANGE
我試過這個解決辦法,但我得到
消息9411,級別16,狀態1,行1
XML分析:行1,字符37,分號預計
我試過的命令是:
SELECT DISTINCT
Split.a.value('.', 'VARCHAR(100)') data
FROM
(SELECT
CAST('<M>' + Replace(CallTraversalLog, ';', '</M><M>') + '</M>' AS XML) AS Data
FROM
tblReportData) AS A
CROSS APPLY
Data.nodes ('/M') AS Split(a)
編輯:我想我知道我爲什麼得到這個錯誤。有些記錄只包含特殊字符&
。我如何替換特殊字符來使查詢工作。
檢查這是工作http://sqlfiddle.com/#!3/6fd60/3 – 2014-12-04 05:43:17
http://www.sqlfiddle.com/#!3/D8418/2 – artm 2014-12-04 05:50:13
我覺得你有特殊字符'&, <, >, 「, '''在列CallTraversalLog' – 2014-12-04 05:53:07