gpt4 book ai didi

sql-server - TSQL 按问题分组

转载 作者:行者123 更新时间:2023-12-03 10:01:45 25 4
gpt4 key购买 nike

我有一个 TSQL 查询,我正试图对其数据进行分组。该表包含用户的记录和他们持有的访问 key ,例如网站管理员、版主等。PK 在用户和访问 key 上,因为用户可以使用不同的 key 多次存在。

我现在正在尝试显示所有用户的表格,并在一列中显示用户持有的所有 key 。

如果 bob 对于他的三个单独的访问 key 有三个单独的记录,则结果应该只有一个 bob 的记录,所有三个都是访问级别。

  SELECT   A.[FirstName],
A.[LastName],
A.[ntid],
A.[qid],
C.FirstName AS addedFirstName,
C.LastName AS addedLastName,
C.NTID AS addedNTID,
CONVERT(VARCHAR(100), p.TIMESTAMP, 101) AS timestamp,
(
SELECT k.accessKey,
k.keyDescription
FROM TFS_AdhocKeys AS k
WHERE p.accessKey = k.accessKey
FOR XML PATH ('key'), TYPE, ELEMENTS, ROOT ('keys')
)
FROM TFS_AdhocPermissions AS p
LEFT OUTER JOIN dbo.EmployeeTable as A
ON p.QID = A.QID
LEFT OUTER JOIN dbo.EmployeeTable AS C
ON p.addedBy = C.QID
GROUP BY a.qid
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');
END

我正在尝试按 a.qid 对数据进行分组,但它迫使我对选择中的每一列进行分组,这将不是唯一的,因此它将包含重复项。

还有什么方法可以处理这个问题?

目前:

UserID   |   accessKey
123 | admin
123 | moderator

期望:

UserID   |   accessKey
123 | admin
moderator

最佳答案

最近在做一些事情,遇到了类似的问题。与您的查询一样,我有一个内部“for xml”,在外部“for xml”中有连接。事实证明,如果连接位于内部“for xml”中,效果会更好。代码贴在下面。我希望这会有所帮助。

Select
(Select Institution.Name, Institution.Id
, (Select Course.Courses_Id, Course.Expires, Course.Name
From
(Select Course.Courses_Id, Course.Expires, Courses.Name
From Institutions Course Course Join Courses On Course.Courses_Id = Courses.Id
Where Course.Institutions_Id = 31) As Course
For Xml Auto, Type, Elements) As Courses
From Institutions Institution
For Xml Auto, Elements, Root('Institutions') )

关于sql-server - TSQL 按问题分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com