我正在尝试将多个数据透视表合并为一个语句。请帮助您。
/bin/bash
我从链接中看到了这种方法,这是唯一更好的方法吗? MS SQL Pivot Another Table Multiple Times
答案 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)
您可能需要在此处和此处进行一些更改,因为此处没有可用的测试数据。