У меня есть запрос TSQL, с которым я пытаюсь объединить данные. Таблица содержит записи пользователей и ключи доступа, которые они хранят, такие как администратор сайта, модератор и т. Д. ПК находится на кнопке «Пользователь» и «Доступ», поскольку пользователь может существовать несколько раз с разными ключами.Группа TSQL по вопросам
Теперь я пытаюсь отобразить таблицу всех пользователей и в одном столбце, все ключи, которые пользователь держит.
Если у bob было три отдельные записи для трех его отдельных ключей доступа, результат должен иметь только одну запись для 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
Каждый столбец должен либо быть перечислены в GROUP BY или быть собраны с совокупной функции, но не оба. Обратите внимание, что один из ** MIN() ** и ** MAX() ** часто используется в качестве агрегатной функции для полей * char * и * varchar *. –
Правильно, в значительной степени то, что ошибка сказала, что я получил, что я не знал, как настроить, для чего именно поэтому я разместил вопрос с просьбой о некоторых дополнительных указаниях – SBB