SQL(Access)将多个记录作为一行返回

时间:2016-10-25 02:45:19

标签: sql sql-server-2012 ms-access-2010 excel-2010

ClaimNo, Diag1, Diag2, Diag3, Diag4, CPT Code
   1     v912                        97729
   1     v912   762.3                81029
   1     v912   762.3  333.9         15321 
   1     v912   762.3  333.9  213.0  71100

是否可以编写一个将上述信息作为一行返回的查询?例如:

ClaimNo, Diag1, Diag2, Diag3, Diag4, CPT Codes
   1     v912   762.3  333.9  213.0  97729, 81029, 15321, 71100

这可能稍微简单一些,但是将不同的CPT代码捕获为一条记录的代码呢:

ClaimNo, CPT Codes
   1     97729, 81029, 15321, 71100

为此,我希望看到针对Microsoft SQL Server 2012的Microsoft Access语法。我将处理许多记录和更大的索赔号。声明可以具有比列出的示例更多或更少的CPT代码。

是否也可以使用嵌入式INDEX和MATCH功能使用Excel执行此类操作?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

BEGIN TRAN
CREATE TABLE #Temp(ClaimNo VARCHAR(100),Diag1 VARCHAR(100),Diag2 VARCHAR(100),Diag3 VARCHAR(100),Diag4 VARCHAR(100),CPTCode VARCHAR(100))

INSERT INTO #Temp(ClaimNo ,Diag1,Diag2,Diag3,Diag4,CPTCode)
SELECT '1','v912','','','','97729' UNION ALL
SELECT '1','v912','762.3','','','81029' UNION ALL
SELECT '1','v912','762.3','333.9','','15321' UNION ALL
SELECT '1','v912','762.3','333.9','213.0','71100' 

SELECT ClaimNo , STUFF((SELECT ',' + CPTCode FROM #Temp FOR XML PATH('')),1,1,'')
FROM #Temp
GROUP BY ClaimNo


ROLLBACK TRAN