SQL - группировка всех данных для одного конкретного идентификатора - PullRequest
0 голосов
/ 30 августа 2018

Я уверен, что есть простое решение для этого, но я не могу обернуть голову вокруг этого. Итак, у меня есть таблица, которая содержит несколько столбцов:

ID, сводка, пользователи

Однако для одного идентификатора существует несколько пользователей, и у каждого пользователя своя сводка. Все это хорошо, однако идентификатор продолжает повторяться для каждого пользователя. Я просто хочу показать идентификатор один раз и все данные для него.

Пример:

ID | Summary | Users
5  | Hi      | me 
5  | Hello   | you
5  | Stack   | him
5  | Over    | someone

Что я хочу это сделать:

ID | Summary | Users
5  | Hi      | me 
   | Hello   | you
   | Stack   | him
   | Over    | someone

Таким образом, ID 5 будет отображаться только в виде одной строки, а не 4 разных. Я пробовал некоторые заявления случая, но это не помогает. Предложение group by потребует агрегатную функцию, которая приведет к сумме или количеству, а не к действительному идентификатору. Я немного потерян или что-то упустил Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 30 августа 2018

Это то, что, вероятно, лучше всего обрабатывается на уровне презентации, например что-то вроде PHP или Java. Но может быть способ сделать это непосредственно из SQL Server:

SELECT
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Summary) = 1
         THEN CONVERT(varchar(10), ID)
         ELSE '' END AS ID_value,
    Summary,
    Users
FROM yourTable
ORDER BY
    ID,
    Summary;

enter image description here

Демо

Чтобы сделать эту работу, должен быть какой-то порядок, с помощью которого мы можем сказать, что определенная запись из группы ID значений является «первой», и, следовательно, должна сообщать значение ID, а другой нет. Для этого я использовал ROW_NUBMER и отображал значение ID для первого итогового значения в алфавитном порядке. Еще одно примечание: мне нужно было привести ID к тексту в выражении CASE, чтобы мы могли использовать пустую строку для не отображающих ID записей.

...