动态sql求和

snlixing 2020-04-06 02:31:58
现有如下表:


需要得到如下表:


各个科目不是固定的,比如有语文,数学,英语,美术等等
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snlixing 2020-04-07
  • 打赏
  • 举报
回复
引用 4 楼 weixin_41985389 的回复:
SELECT * FROM [数据源]
AS P
PIVOT
(
SUM([成绩]) FOR
p.[科目]IN ([语文],[数学],[英语])
) AS T



[语文],[数学],[英语] 这些是不固定的,需要动态生成的
XXXXn帅气 2020-04-07
  • 打赏
  • 举报
回复
SELECT * FROM [数据源]
AS P
PIVOT
(
SUM([成绩]) FOR
p.[科目]IN ([语文],[数学],[英语])
) AS T
snlixing 2020-04-07
  • 打赏
  • 举报
回复
怎么生成动态SQL呢
XXXXn帅气 2020-04-07
  • 打赏
  • 举报
回复
引用 6 楼 snlixing 的回复:
[语文],[数学],[英语] 这些是不固定的,需要动态生成的

   if(OBJECT_ID('tempdb..#test1')is not null) drop table #test1
select * into #test1 from (select '3.5' clas,'t1' name,'v1' project,100 results union all
select '3.5' clas,'t2' name,'v1' project,090 results union all
select '3.5' clas,'t3' name,'v2' project,080 results union all
select '3.6' clas,'t4' name,'v1' project,070 results union all
select '3.6' clas,'t5' name,'v3' project,060 results union all
select '3.6' clas,'t6' name,'v2' project,050 results)as a
select * from #test1
declare @sql1 nvarchar(max);
select @sql1=(select STUFF((SELECT distinct ','+project FROM #test1 FOR XML PATH('')),1,1,''))
select @sql1='Select * from (select clas,project,results from #test1) as a pivot(sum(results) for a.project in ('+@sql1+'))as B'
exec(@sql1)
snlixing 2020-04-07
  • 打赏
  • 举报
回复
[语文],[数学],[英语] 这些是不固定的,需要动态生成的
snlixing 2020-04-06
  • 打赏
  • 举报
回复
引用 1 楼 Hello World, 的回复:
选择出科目,生成动态SQL再exec得到结果


大师,具体怎么写呢,写了半天写不出来
Hello World, 2020-04-06
  • 打赏
  • 举报
回复
选择出科目,生成动态SQL再exec得到结果

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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