2012-03-19 2 views
0

Как получить следующий результат из таблицы в MSSQL 2005?Как получить разделенное запятыми значение для следующего сценария таблицы БД

Input 
----- 

main_idn notice_id  group_name employer_name 
    1   20  State Client  Unknown 
    2   20  Canada Corp  Unknown 
    3   20  Unknown   Pacific Bell 
    4   30  State Client  Unknown 
    5   30  Reality Corp  Unknown 
    6   30  Unknown   Bell Labs 
    7   30  Unknown   AT&T 

Output 
------ 

notice_idn group_name         employer_name 
20   State Client,Canada Corp,Unknown    Unknown , Unknown , Pacific Labs 
30   State Client,Reality Corp.Unknown,Unknown  Unknown , Unknown , Bell Labs , AT&T 

В чем-то вроде MYSQL я могу написать простой запрос типа:

из таблицы получить notice_idn, GROUP_CONCAT (group_name) как имя_группы, GROUP_CONCAT (employer_name) в emp_name группе notice_idn

+0

Поиск StackOverflow. На подобные вопросы есть много ответов. –

+0

Я видел много таких «дубликатов», но я не могу коррелировать так же, потому что конструкция соединения меня сбивает с толку. Может ли кто-нибудь сказать мне решение? – Nishant

ответ

1

Раствор, уже дано here, которое мне нравится, однако бы вы, пожалуйста, попробуйте с нижеследующим решением, хотя оба являются тем же самым решением, спасибо за ваше время.

SELECT outerT.notice_idn, 

     STUFF(ISNULL((SELECT ', ' + innerT.group_name 
       FROM TargetTableName innerT 
       WHERE innerT.notice_id = outerT.notice_id 
      GROUP BY innerT.notice_id, innerT.group_name 
      FOR XML PATH (''), TYPE).value('.','VARCHAR(MAX)'), ''), 1, 1, '') group_name, 

     STUFF(ISNULL((SELECT ', ' + innerT.employer_name 
       FROM TargetTableName innerT 
       WHERE innerT.notice_id = outerT.notice_id 
      GROUP BY innerT.notice_id, innerT.employer_name 
      FOR XML PATH (''), TYPE).value('.','VARCHAR(MAX)'), ''), 1, 1, '') employer_name    

FROM TargetTableName outerT 
GROUP BY outerT.notice_id 
+0

Удивительное спасибо. Я новичок в запросах DB. Мне нужно изучить идею, используемую в этом решении, но идеально. – Nishant

+0

Добро пожаловать, просто продолжайте учиться и продолжайте ... –

Смежные вопросы