本帖最后由 毛毛 于 2021-6-24 21:00 编辑
- SELECT
- 公司
- ,convert(varchar(7),出库时间, 120) 月份
- ,sum(金额) 金额 into #temp
- FROM tb
- group by 公司,convert(varchar(7),出库时间, 120)
- DECLARE @sql_str VARCHAR(8000)
- DECLARE @sql_col VARCHAR(8000)
- SELECT @sql_col = ISNULL(@sql_col + ',','') + QUOTENAME(月份) FROM #temp GROUP BY 月份
- SET @sql_str = '
- SELECT * FROM (
- SELECT 公司,月份,金额 FROM #temp) p PIVOT
- (SUM(金额) FOR 月份 IN ( '+ @sql_col +') ) AS pvt
- ORDER BY pvt.公司'
- EXEC (@sql_str)
- drop table #temp
复制代码 首先创建一个按月份汇总的临时表,然后再使用sql的动态行转列,代码如上,亲测有效。
|