复杂的汇总统计

yuhouqingchen2020 2019-08-26 11:06:38
表结构如下:
name qname heji
A 永久 10
A 12个月 20
A 6个月 30
A 3个月 40
A 永久 15
A 12个月 6
A 6个月 5

B 永久 20
B 12个月 30
B 6个月 40
B 3个月 50
B 永久 1

想要的显示结果
name 永久 12个月 6个月 3个月
A 25 26 35 40
A 21 30 40 50
...全文
63 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2019-08-26
  • 打赏
  • 举报
回复

IF OBJECT_ID(N'TEMPDB.DBO.#T') IS NOT NULL
DROP TABLE #T
GO

CREATE TABLE #T
(NAME VARCHAR(10),
 QNAME NVARCHAR(10),
 HEJI INT)

INSERT INTO #T
SELECT 'A','永久',10 UNION ALL
SELECT 'A','12个月',20 UNION ALL
SELECT 'A','6个月',30 UNION ALL
SELECT 'A','3个月',40 UNION ALL
SELECT 'A','永久',15 UNION ALL
SELECT 'A','12个月',6 UNION ALL
SELECT 'A','6个月',5 UNION ALL
SELECT 'B','永久',20 UNION ALL
SELECT 'B','12个月',30 UNION ALL
SELECT 'B','6个月',40 UNION ALL
SELECT 'B','3个月',50 UNION ALL
SELECT 'B','永久',1
GO 

DECLARE @SQL NVARCHAR(1000)

SELECT @SQL=ISNULL(@SQL+',','')+'['+QNAME+']' 
FROM (SELECT QNAME FROM #T GROUP BY QNAME) AS A

SET @SQL='SELECT * FROM (SELECT NAME,QNAME,SUM(HEJI) AS HEJI FROM #T GROUP BY NAME,QNAME) A 
          PIVOT (MAX(HEJI) FOR QNAME IN ('+@SQL+')) B'

EXEC(@SQL)
听雨停了 2019-08-26
  • 打赏
  • 举报
回复

use Tempdb
go
--> --> 中国风(Roy)生成測試數據
 
if not object_id(N'Tempdb..#tab') is null
	drop table #tab
Go
Create table #tab([name] nvarchar(21),[qname] nvarchar(24),[heji] int)
Insert #tab
select N'A',N'永久',10 union all
select N'A',N'12个月',20 union all
select N'A',N'6个月',30 union all
select N'A',N'3个月',40 union all
select N'A',N'永久',15 union all
select N'A',N'12个月',6 union all
select N'A',N'6个月',5 union all
select N'B',N'永久',20 union all
select N'B',N'12个月',30 union all
select N'B',N'6个月',40 union all
select N'B',N'3个月',50 union all
select N'B',N'永久',1
Go
Select * from #tab
--测试数据结束

DECLARE @name VARCHAR(max),@sql VARCHAR(max)
set @name =stuff((SELECT DISTINCT ',['+qname+']'  from #tab for xml PATH('')),1,1,'')
set @sql ='SELECT * from (select name,qname,sum(heji) as heji from #tab group by name,qname) a pivot(max(heji)for qname in('+@name+'))a'
EXEC( @sql)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧