mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

学习SQL语句(强大的group by与select from模式)

来源:网络整理  作者:网络  发布时间:2020-12-08 00:39
本文介绍的是强大的group by使用与利用select from (select from)的模式生成SQL语句的代码。...
exec(@sql)

group by stdname
select * from #tmpCloumns

复制代码 代码如下:

select @strSql = ''


group by与sum + case结合,可以将表1中的记录(行)变成表2的字段(列)。Sum里面如果没有case,那么出来的值,只能是全部科目的总和,用了case以后,就是某科的成绩;然后这里用了好几个sum,每个科目一个sum,于是表1中本来某人某科占一条记录的“行”就变成了表2里某人一条记录,每科做一个字段了


利用select from (select from)的模式生成SQL语句
select @sql = @sql + ' from #student group by stdname '
where id = object_id( ' tempdb.dbo.#student2 ' )


select stdname,
declare @strSql nvarchar( 800 )

' from [#student2] ' + char ( 10 ) + char ( 13 )
select @strSql = substring(@strSql, 11 ,len(@strSql)) + ' order by stdname,[科目] '

isnull(sum( case stdsubject when ' 语文 ' then Result end), 0 ) [语文]
isnull(sum( case stdsubject when ' 物理 ' then Result end), 0 ) [物理],
from #student

复制代码 代码如下:

复制代码 代码如下:

from tempdb.dbo.syscolumns
isnull(sum( case stdsubject when ' 化学 ' then Result end), 0 ) [化学],
declare @sql varchar( 4000 )
select @strSql = @strSql + ' union all ' + char ( 10 ) + char ( 13 ) +
exec(@strsql)
以上节选自网上一些贴子的SQL代码,很早以前看到的,原链接我不知道了。
from #tmpCloumns
from (select distinct stdsubject from #student) as a

' select [stdname], ''' + [name] + ''' as [科目],[ ' + [name] + ' ] ' + char ( 10 ) + char ( 13 ) +
print @sql

and [name] <> ' stdname '
set @sql = ' select stdname '
select [name] into #tmpCloumns

isnull(sum( case stdsubject when ' 数学 ' then Result end), 0 ) [数学],


select @sql = @sql + ' ,isnull(sum(case stdsubject when ''' + stdsubject + ''' then Result end),0) [ ' + stdsubject + ' ] '

相关热词: SQL语句

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mssql/1247.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

学习SQL语句(强大的group by与select from模式)

2020-12-08 编辑:网络

exec(@sql)

group by stdname
select * from #tmpCloumns

复制代码 代码如下:

select @strSql = ''


group by与sum + case结合,可以将表1中的记录(行)变成表2的字段(列)。Sum里面如果没有case,那么出来的值,只能是全部科目的总和,用了case以后,就是某科的成绩;然后这里用了好几个sum,每个科目一个sum,于是表1中本来某人某科占一条记录的“行”就变成了表2里某人一条记录,每科做一个字段了


利用select from (select from)的模式生成SQL语句
select @sql = @sql + ' from #student group by stdname '
where id = object_id( ' tempdb.dbo.#student2 ' )


select stdname,
declare @strSql nvarchar( 800 )

' from [#student2] ' + char ( 10 ) + char ( 13 )
select @strSql = substring(@strSql, 11 ,len(@strSql)) + ' order by stdname,[科目] '

isnull(sum( case stdsubject when ' 语文 ' then Result end), 0 ) [语文]
isnull(sum( case stdsubject when ' 物理 ' then Result end), 0 ) [物理],
from #student

复制代码 代码如下:

复制代码 代码如下:

from tempdb.dbo.syscolumns
isnull(sum( case stdsubject when ' 化学 ' then Result end), 0 ) [化学],
declare @sql varchar( 4000 )
select @strSql = @strSql + ' union all ' + char ( 10 ) + char ( 13 ) +
exec(@strsql)
以上节选自网上一些贴子的SQL代码,很早以前看到的,原链接我不知道了。
from #tmpCloumns
from (select distinct stdsubject from #student) as a

' select [stdname], ''' + [name] + ''' as [科目],[ ' + [name] + ' ] ' + char ( 10 ) + char ( 13 ) +
print @sql

and [name] <> ' stdname '
set @sql = ' select stdname '
select [name] into #tmpCloumns

isnull(sum( case stdsubject when ' 数学 ' then Result end), 0 ) [数学],


select @sql = @sql + ' ,isnull(sum(case stdsubject when ''' + stdsubject + ''' then Result end),0) [ ' + stdsubject + ' ] '

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mssql/1247.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页