在我的SQL Server 2014中,我有3个表。在一个表中是用户信息,在另一个表中是用户信息,在第三个表中是用户和组的依赖关系。
我刚刚设置了查询,但结果却不是我想要的那样。 就像我最近的问题Combine lines in sql query一样,我想尝试获得类似的结果
这是我服务器上的查询:
SELECT server01.customer05.user.id, server01.customer05.user.namename, server01.customer05.groups.name FROM server01.customer05.username
INNER JOIN customer05.bgrel ON server01.customer05.id=server01.customer05.bgrel.username_id
INNER JOIN customer05.groups ON customer05.groups.id=customer05.bgrel.groups_id
WHERE server01.customer05.username != 'ANONYMOUS' and server01.customer05.username != 'INST_ROOT' and server01.customer05.username != 'SERVER_ROOT_3'
ORDER BY username
答案 0 :(得分:1)
您可以按<template v-if="inputCurrentObject.type === 'string' ">
<Integer :input="inputCurrentObject.value" />
</template>
和ID
对表进行分组,然后使用user
函数将STUFF
作为逗号分隔值
首先让我们建立一个与您的问题的样本数据相匹配的测试表。
group
现在我们可以像这样查询不同的ID和用户
declare @t table (ID int, [user] varchar(10), [group] varchar(10))
insert into @t (ID, [user], [group])
values (1, 'max', 'g1'),
(1, 'max', 'admin'),
(2, 'tom', 'g2'),
(3, 'jan', 'g1'),
(3, 'jan', 'k1'),
(3, 'jan', 'o1')
这将给我们
select t.ID,
t.[user]
from @t t
group by t.ID, t.[user]
现在我们需要做的是将组作为每行的逗号分隔值,并且我们可以使用stst函数来完成。
ID user
1 max
2 Tom
3 Jan
结果将是
select t.ID,
t.[user],
stuff( (select ',' + t2.[group] from @t t2 where t2.ID = t.ID for XML path(''), type).value('.', 'NVARCHAR(MAX)'), 1, 1, '') as [group]
from @t t
group by t.ID, t.[user]
查看您的查询,我认为您可以像这样实现它。由于我没有您的数据库,因此我无法进行脱轨测试。
ID user group
1 max Admin,g1
2 Tom g2
3 Jan g1,K1,O1
答案 1 :(得分:0)
使用SQL Server资料-
WITH CTE (ID, [user],[ group])
AS
(
SELECT 1,'max', 'g1' UNION ALL
SELECT 1,'max', 'Admin' UNION ALL
SELECT 2,'Tom', 'g2' UNION ALL
SELECT 3,'Jan', 'g1' UNION ALL
SELECT 3,'Jan', 'K1' UNION ALL
SELECT 3,'Jan', 'O1'
-- Above, you need to replace SELECT statements
-- with your SELECT statement from which you are
-- Getting the first table output
)
SELECT DISTINCT B.ID,B.[user],
STUFF((SELECT DISTINCT ',' + A.[ group] FROM CTE A WHERE A.ID = B.ID FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') [Group]
FROM CTE B
输出为-
ID user Group
1 max Admin,g1
2 Tom g2
3 Jan g1,K1,O1