缓存SQL查询以从多个记录创建1行

时间:2018-10-29 20:25:18

标签: sql sql-server caching multiple-columns comma

我有下面的记录,并希望创建1行记录。 我尝试了STUFF,FOR XML PATH,但没有成功

+-----------+-------+---------+
| CLIENT_ID | Event | DX_Code |
+-----------+-------+---------+
|        54 |     5 | F45.72  |
|        54 |     5 | X45.34  |
|        54 |     5 | M98.32  |
+-----------+-------+---------+

输出= 54,5,F45.72 X45.34 M98.32

2 个答案:

答案 0 :(得分:0)

您可以通过将STUFF()FOR XML PATH('')一起使用来实现

CREATE TABLE T
    ([CLIENT_ID] int, [Event] int, [DX_Code] varchar(6))
;

INSERT INTO T
    ([CLIENT_ID], [Event], [DX_Code])
VALUES
    (54, 5, 'F45.72'),
    (54, 5, 'X45.34'),
    (54, 5, 'M98.32')
;

SELECT DISTINCT T1.[CLIENT_ID],
                T1.[Event],
                STUFF(
                        (
                          SELECT ',' + T2.[DX_Code] 
                          FROM T T2
                          WHERE T2.[CLIENT_ID] = T1.[CLIENT_ID]
                                AND T2.[Event] = T1.[Event]
                          FOR XML PATH ('')
                        ) , 1, 1, ''
                    ) Result
FROM T T1;

答案 1 :(得分:0)

这应该给您预期的结果

Uncaught TypeError: Cannot set property 'classList' of undefined

输出:

SELECT      CAST(t1.CLIENT_ID AS VARCHAR) + ','+ CAST(t1.Event AS VARCHAR)+ ','+
            STUFF((    SELECT ' ' + t2.DX_Code AS [text()]

                        FROM #temp t2
                        WHERE
                        t2.CLIENT_ID = t1.CLIENT_ID
                        and       t2.Event = t1.Event
                        FOR XML PATH('')
                        ), 1, 1, '' )

            AS OutputText
FROM  #temp t1
GROUP BY t1.CLIENT_ID,t1.Event