这些数据:
ID Desc
1 CUSTSEG
2 CUSTSEG;CARDMNU;CRC;CRCBISOA;CARDMNU;CRC;CRCBISOA
3 CUSTSEG;HKM
4 CUSTSEG;HKM;HKM
5 CUSTSEG;HKM;HKM;HKM;HKM;HKM;HKM;HKM
6 CUSTSEG;PHPM
7 CUSTSEG;PHPM;CARDMNU
8 CUSTSEG;PHPM;CARDMNU;ATM
必须以这种格式查询:
COUNT Desc
1 ATM
4 CARDMNU
2 CRC
2 CRCBISOA
8 CUSTSEG
10 HKM
3 PHPM
我怎样才能实现这个目标?子?我试过这个:
SELECT COUNT(*), CallTraversalLog
FROM [IVR].[dbo].[tblReportData]
WHERE CallTraversalLog Like '%CUSTSEG%'
GROUP BY CallTraversalLog
但我得到的结果是
COUNT Desc
1 CUSTSEG;PHPM;CARDMNU;CRC;ATM
1 CUSTSEG;PHPM;CARDMNU;CRC;CARDMNU;CRC
1 CUSTSEG;PHPM;CARDMNU;CRC;CARDMNU;CRC;CRCBISOA
2 CUSTSEG;PHPM;CARDMNU;CRC;CC
3 CUSTSEG;PHPM;CARDMNU;CRC;CRC
2 CUSTSEG;PHPM;CARDMNU;CRC;CRC;CARDMNU;CRC
1 CUSTSEG;PHPM;CARDMNU;CRC;CRC;CRC;CRC;CARDMNU;CRC
25 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION
4 CUSTSEG;PHPM;CARDMNU;CRC;CRCACTIVATION;CRCENROLL
55 CUSTSEG;PHPM;CARDMNU;CRC;CRCAPST
答案 0 :(得分:0)
我会拆分字符串并计算项目。您需要一个表值函数,它通过分隔符拆分字符串。如果您不想编写自己的功能,可以轻松谷歌一个。然后将CROSS APPLY
函数添加到您的表中并计算项目。
SELECT s.item, count(*)
FROM [IVR].[dbo].[tblReportData] d
CROSS APPLY dbo.fnSplitString(d.CallTraversalLog, ';') s
GROUP BY s.item