MS SQL-连接多个枢轴

时间:2020-07-03 16:24:09

标签: sql sql-server database pivot

我正在尝试将多个数据透视表合并为一个语句。请帮助您。

/bin/bash

我从链接中看到了这种方法,这是唯一更好的方法吗? MS SQL Pivot Another Table Multiple Times

2 个答案:

答案 0 :(得分:1)

我建议条件聚合。我认为这可以满足您的要求:

select id,
       max(case when Code = 'A' then lglflg end) as legal_a,
       max(case when Code = 'B' then lglflg end) as legal_b,
       max(case when Code = 'C' then lglflg end) as legal_c,
       max(case when Code = 'D' then lglflg end) as legal_d,
       max(case when Code = 'A' then [MH Code] end) as mh_a,
       max(case when Code = 'B' then [MH Code] end) as mh_b,
       max(case when Code = 'C' then [MH Code] end) as mh_c,
       max(case when Code = 'D' then [MH Code] end) as mh_d
from #tmp1
group by id;

答案 1 :(得分:1)

您可以尝试以下操作:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((select distinct ', 
            MAX(CASE WHEN [Code]=''' + CAST([Code] as varchar(10)) + ''' THEN [Legal] ELSE 0 END) AS [LglCode-' + CAST([Code] as varchar(10)) + '],
            MAX(CASE WHEN [Code]=''' + CAST([Code] as varchar(10)) + ''' THEN [MH Code] ELSE 0 END) AS [MH Code-' + CAST([Code] as varchar(10)) + ']'
            /*---------------You can add other columns here similarly--------------*/
            FROM #tmp1 
            FOR XML PATH(''),type).value('.','varchar(max)'),1,2,'')

SET @query = 'SELECT ID, ' + @Cols + '  FROM #tmp1 group by ID' 

--print (@query)
exec(@query)

您可能需要在此处和此处进行一些更改,因为此处没有可用的测试数据。