2013-10-25 49 views
2

我有一個數據集的格式如下:SQL - 數項匹配的文本的情況下,爲每個用戶

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 

所有幫助表示讚賞。謝謝。

+0

你在網站鎖定或者是那些動態嗎? –

+0

認爲它是動態的 –

+0

TSQL。 每一行都是具有URL訪問權限的用戶。我需要列出每個域的總計(意思是wikipedia.com/trees和wikipedia.com/sql)將被視爲相同 – user2920813

回答

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 

Link to test