【发布时间】:2014-01-23 01:51:24
【问题描述】:
I have 3 tables
------------------------
users
1 -> mark
2 -> adel
3 -> khali
4 -> piter
5 -> adam
------------------------
groups
1 -> group 1
2 -> group 2
3 -> group 3
4 -> group 4
----------------------
usersGroups
1 -> 4
3 -> 2
4 -> 3
1 -> 2
I want to display
if username has a group then 1 if it hasn't then 0
like this whith pivot but I dont know how ???
-- username group1 group2 group3 group4
----------------------------------------------------
-- mark 0 1 0 1
-- adel 0 1 0 0
-- adam 0 0 1 0
I try this please help me
SELECT username, [group1] AS 'group1', [group2] AS 'group2', [group3] AS 'group3', [group4] AS 'group4'
FROM
(
SELECT ug.groupid, ug.userid, g.description, u.username FROM users u
INNER JOIN usersgroups ug ON u.userid = ug.userid
INNER JOIN groups g ON ug.groupid = g.groupid
)AS q
PIVOT
(COUNT(groupid) FOR [description] IN ([group1],[group2],[group3],[group4])) AS pvt
【问题讨论】:
-
现在看看我已经更新了答案。
标签: sql sql-server sql-server-2008 tsql sql-server-2005