如何将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