2

我有一个格式如下的数据集:

ID  URL
1   google.com/trees
1   Wikipedia.com
1   Wikipedia.com/trees
2   Hello.com
2   Yahoo.com
3   Wikipedia.com
3   Google.com
3   MSN.com

我想创建一个像这样格式化的表(一个实际的数据集,而不仅仅是输出窗口中的一个表),它基本上总结了对每个域的访问。

ID  Wikipedia.com   Google.com  Hello.com   Yahoo.com   MSN.com
1   2               1           0           0           0
2   0               0           1           1           0
3   1               1           0           0           1

感谢所有帮助。谢谢。

4

1 回答 1

1

这适用于 mssql 版本 2008

declare @yourtable table(id int, URL varchar(20))
insert @yourtable values(1, 'google.com/trees')
insert @yourtable values(1, 'Wikipedia.com')
insert @yourtable values(1, 'Wikipedia.com/trees')
insert @yourtable values(2, 'Hello.com')

declare @shorturltable table(URL varchar(20))
insert @shorturltable values
('Wikipedia.com'),('Google.com'),('Hello.com'),('Yahoo.com'),('MSN.com')


;with t as(
 SELECT 1 a, y.id, su.URL 
 FROM @yourtable y
 JOIN @shorturltable su
 ON y.URL like '%' + su.URL + '%'
) 
SELECT id, [Wikipedia.com],[Google.com],[Hello.com],[Yahoo.com],[MSN.com]
FROM t
PIVOT (count(a) FOR [URL] IN ([Wikipedia.com],[Google.com],[Hello.com],[Yahoo.com],[MSN.com])) AS pvt

测试链接

于 2013-10-25T18:51:08.927 回答