SQL Server Stuff на основе условия

Это моя текущая таблица.

ImageID    Brand     Segment
101        Kitkat     Biscuit
101        Galaxy     Biscuit
102        Kitkat     Chocolate
102        Kitkat     Chocolate
103        Kitkat     Chocolate
103        Twix       Ice Cream

Моя желаемая таблица

ImageID    Brand             Segment
101        Kitkat,Galaxy     Biscuit
102        Kitkat            Chocolate
103        Kitkat, Twix      Chocolate, Ice Cream

Пытаюсь сгруппировать по ImageID. Таким образом, если ImageID имеет несколько записей. потом Brand и Segment будут разными, но не будут повторяться [Ссылка: 102, слово Kitkat & Chocolate не повторялось]

Заранее спасибо.

stackoverflow.com/questions/451415/… звук правильно? Group_concat - обычный термин для этого, я полагаю, вам нужно подделать его в MSSQL
Twelfth 13.03.2018 20:44

В записи 103. Имею киткат марки & твикс. В сегменте у меня есть шоколад и мороженое. Итак, в основном я хочу заполнить оба значения

MDMalik 13.03.2018 20:44

@Twelfth, позвольте мне проверить, но, похоже, вы ведете меня по правильному пути, позвольте мне проверить и это. Благодарность

MDMalik 13.03.2018 20:45
stackoverflow.com/questions/17591490/… может быть лучше, использует функцию заполнения. Поиск в Google MSSQL 2008 group_concat дает массу информации. Судя по всему, у 2017 года для этого есть лучшая функция.
Twelfth 13.03.2018 20:47
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
4
177
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

STUFF - это общий подход SQL Server для этого:

SELECT T.ImageID,
       STUFF((SELECT DISTINCT ',' + Brand
             FROM yourTable T2
             WHERE T2.ImageID= T.ImageID
             FOR XML PATH ('')),1,1,'') Brand,
       STUFF((SELECT DISTINCT ',' + Segment
             FROM yourTable T2
             WHERE T2.ImageID= T.ImageID
             FOR XML PATH ('')),1,1,'') Segment
FROM yourTable T
GROUP BY T.ImageID

Другие вопросы по теме