SQL题目
来源:互联网 发布:nginx test config 编辑:程序博客网 时间:2024/06/01 09:03
Name Subject Value
张三 语文 80
张三 数学 90
张三 英语 85
李四 语文 85
李四 数学 92
李四 英语 82
查询出表
Name 语文 数学 英语
张三 80 90 85
李四 85 92 82
看SQL一个晚上,以为自己能写出来,结果还是网上找到了答案。答案是对,但不知道这样写好不好。
select name , max(case SUBJECT when '数学' then VALUE else 0 end) [数学] ,
max(case subject when '英语' then VALUE else 0 end) [英语] ,
max(case subject when '语文' then VALUE else 0 end) [语文] from a group by name
找到答案,利用动态查询如下:
declare @sql varchar(8000)
SET @sql='select name'
select @sql = @sql + ',max(case Subject when '''+Subject+''' then value end) ['+Subject+']'
from (select distinct Subject from dbo.a)AS a
select @sql = @sql+' from a group by name'
exec(@sql)
可以加上print @sql 查看内容
declare @sql varchar(8000)
set @sql = 'select name '
select @sql = @sql + ' , max(case subject when ''' + subject + ''' then value else 0 end) [' + subject + ']'
from (select distinct subject from a) as a
SELECT @sql = @sql + ' , cast(avg(value*1.0) as decimal(18,2)) 平均分 , sum(value) 总分 from a group by name'
PRINT @sql
exec(@sql)
cast(avg(value*1.0) as decimal(18,2))
CAST (expression AS data_type)
decimal(3,2)
decimal:
- 3—整数部分加小数部分长度为 3
- 1—小数部分长度为 1
参数说明:
expression:任何有效的SQServer表达式。
AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。
data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。
平均分和总分也算出来
- sql题目
- sql题目
- sql题目
- SQL题目
- 一道SQL题目
- sql 连接面试题目
- SQL面试题目
- SQL笔试题目
- sql经典题目(1)
- sql server 数据库题目
- sql常见面试题目
- SQL Server面试题目
- sql题目复习
- 不错的SQL题目
- SQL面试题目
- 几个sql题目
- sql题目汇总
- SQL面试题目汇总
- ROS总结——rosed
- vi和vim的使用方法
- 关于人工智能落地的产品的一些感想
- oracle sum case when group by,同时使用,实现分组统计
- [LeetCode]371. Sum of Two Integers(不使用+-运算符求和)
- SQL题目
- node.js express框架
- node.js express工程的结构
- Ubuntu 小问题合集
- node.js 路由控制
- Android性能优化
- node.js 模版引擎
- hdu 2048 神、上帝以及老天爷
- ejs的视图模板引擎