Сведение строк результатов запроса в столбцы со значениями, разделенными запятыми

У меня есть этот запрос:

SELECT 
    HICNo
    ,trr.CUS_ID
    ,TRRRunDate
    ,trr.LastName
    ,trr.FirstName
    ,trr.TRCCode
    ,trr.TRCDescr
    ,trr.TCCode
    ,trr.TRREffDate
    ,PBPID
    ,PriorPBPID
    ,LISLevel
    ,[LIS%]
    ,LISEffDate
    ,CONVERT (CHAR,INE_EV_DT,101) AS EventDate
    ,INE_USER_ID AS UserID
    ,tcl.TCL_TYPE_DESC AS [Description]
FROM 
    #AM_TRR_INS trr                                          
    JOIN ETLStaging.dbo.INS_INSURED ins ON trr.CUS_ID   = ins.INS_CUS_ID
    JOIN ETLStaging.dbo.INE_INSURED_EV ine ON ins.INS_ID = INE.INE_INS_ID
    JOIN ETLStaging.dbo.TCL_TYPE_CD_LOOKUP tcl ON 
            ine.INE_TYPE = tcl.TCL_TYPE_CODE
            AND tcl.TCL_ID = '12'
UNION 
(
    SELECT
        HICNo
        ,trr.CUS_ID
        ,TRRRunDate
        ,trr.LastName
        ,trr.FirstName
        ,trr.TRCCode
        ,trr.TRCDescr
        ,trr.TCCode
        ,trr.TRREffDate
        ,PBPID
        ,PriorPBPID
        ,LISLevel
        ,[LIS%]
        ,LISEffDate
        ,CONVERT (CHAR,INA_PRC_DT,101) AS EventDate
        ,ina.INA_USER_ID AS UserID
        ,tcla.TCL_TYPE_DESC AS [Description]

    FROM 
        #AM_TRR_INS trr                                          
        JOIN ETLStaging.dbo.INS_INSURED ins ON trr.CUS_ID   = ins.INS_CUS_ID
        JOIN ETLStaging.dbo.INA_INSURED_AUD ina ON ins.INS_ID= ina.INA_INS_ID
        JOIN ETLStaging.dbo.TCL_TYPE_CD_LOOKUP tcla ON 
            ina.INA_TYPE = tcla.TCL_TYPE_CODE
            AND tcla.TCL_ID = '12'  
)

Это возвращает такой набор результатов

9876543A 123456789 13/02/2011
ФАМИЛИЯ ИМЯ 011 Заявка принята как отправленная 61 01/03/2011 002 NULL 04/02/2011 MARKW APPLICATION 9876543A 1234567IR89 13/02/2011 Заявка принята 61 FASTNAME1 LASTNAME 01.03.2011 002 NULL 08.02.2011 MARKW NEW ID CARD 9876543A 123456789 13.02.2011
ФАМИЛИЯ ИМЯ 011 Регистрация принята как представленная 61 01.03.2011 002 NULL 08.02.2011 MCATIONSB473 INFORMATION CMS 9876543A 123456789 13.02.2011
ФАМИЛИЯ ИМЯ 011 Регистрация принята как отправленная 61 01.03.2011 002 NULL 08.02.2011 MCSB475 ОТВЕТ ПОЛУЧЕН ОТ CMS

Я пытаюсь свести результаты к одной строке, где столбцы EventDate, UserID и Description разделены запятыми, а результаты помещаются в одну строку и просто используют GROUP BY, чтобы сгладить все. Я застрял - использование XML PATH и COALESCE не работает так, как я надеялся...


person ashurexm    schedule 15.03.2011    source источник
comment
Связанный: stackoverflow.com/questions/2046037/   -  person OMG Ponies    schedule 16.03.2011
comment
Опубликуйте желаемый результат, включая форматирование. например будет ли это {eventdate,userid,description;eventdate,userid,description;...} в одном столбце?   -  person RichardTheKiwi    schedule 16.03.2011


Ответы (1)


Также можно определить собственную агрегатную функцию, используя интеграцию CLR с SQL Server 2005, http://dotnetslackers.com/Community/blogs/basharkokash/archive/2008/06/07/how-to-реализоватьсвоюсобственнуюагрегатнуюфункциювsqlclr-sql-server-2005.aspx

person pcofre    schedule 27.03.2011