一个sql中常遇到的表结构转换问题
2007-05-09 13:34
323 查看
score表结构如
name subject score
-----------------------------------
大都 语文 59
大都 数学 78
大都 外语 89
大都 物理 98
小都 语文 90
小都 外语 80
小都 物理 70
德国 语文 90
德国 数学 50
德国 外语 80
德国 物理 89
哈哈 语文 99
哈哈 数学 80
哈哈 物理 89
现需转换成表结构如:
姓名 数学 外语 物理 语文
-----------------------------------------
大都 78 89 98 59
德国 50 80 89 90
哈哈 80 0 89 99
小都 0 80 70 90
解决之道:
--当出现的subject的个数不定的时候
declare @sql varchar(8000)
set @sql='SELECT name as 姓名'
select @sql=@sql+',['+subject+']=MAX(CASE subject WHEN '''+subject+''' THEN score ELSE 0 END)' from score group by subject
exec(@sql+' FROM score GROUP BY name')
--当出现的subject的个数确定的时候
select name as 姓名,
数学=MAX(CASE WHEN subject='数学' THEN score ELSE 0 END),
外语=MAX(CASE WHEN subject='外语' THEN score ELSE 0 END),
物理=MAX(CASE WHEN subject='物理' THEN score ELSE 0 END),
语文=MAX(CASE WHEN subject='语文' THEN score ELSE 0 END)
from score
group by name
name subject score
-----------------------------------
大都 语文 59
大都 数学 78
大都 外语 89
大都 物理 98
小都 语文 90
小都 外语 80
小都 物理 70
德国 语文 90
德国 数学 50
德国 外语 80
德国 物理 89
哈哈 语文 99
哈哈 数学 80
哈哈 物理 89
现需转换成表结构如:
姓名 数学 外语 物理 语文
-----------------------------------------
大都 78 89 98 59
德国 50 80 89 90
哈哈 80 0 89 99
小都 0 80 70 90
解决之道:
--当出现的subject的个数不定的时候
declare @sql varchar(8000)
set @sql='SELECT name as 姓名'
select @sql=@sql+',['+subject+']=MAX(CASE subject WHEN '''+subject+''' THEN score ELSE 0 END)' from score group by subject
exec(@sql+' FROM score GROUP BY name')
--当出现的subject的个数确定的时候
select name as 姓名,
数学=MAX(CASE WHEN subject='数学' THEN score ELSE 0 END),
外语=MAX(CASE WHEN subject='外语' THEN score ELSE 0 END),
物理=MAX(CASE WHEN subject='物理' THEN score ELSE 0 END),
语文=MAX(CASE WHEN subject='语文' THEN score ELSE 0 END)
from score
group by name
相关文章推荐
- 一个sql中常遇到的表结构转换问题
- 一个sql中常遇到的表结构转换问题
- 一个sql中常遇到的表结构转换问题
- 今天在csdn上遇到一个问题,是关于sql数据行列转换的,我的写法如下:
- 记录今天学习SQL遇到的一个小问题
- sql 根据一个表更新 另一个表的例子及可能遇到的问题
- MFC遇到的一个字符集问题:不能将参数1从“const char []”转换为“LPCTSTR”
- 不要在一棵树上吊死——有感于视频转换遇到的一个问题
- 一个SQL语句的问题:行列转换
- 今天配置spring-mybites时遇到一个创建不了sqlSessionFactroy的问题
- 今天遇到一个SQL的问题
- PL/SQL Developer遇到一个奇葩无效标识符问题随记
- 在hibernate中直接执行原生sql遇到类型转换问题
- 开发中遇到的一个关于 SQL 语句执行的问题
- php关于使用iconv(...)函数对字符进行中文转换时,遇到的一个问题
- C#写一般处理程序遇到的一个String和int转换的问题
- 一个SQL语句的问题:行列转换
- 使用Android studio转换Jar包时,遇到的一个问题------> Could not find tools.jar.
- java通过xstream将xml转换为java对象遇到的问题(一个对像中两个子类的类名相同)
- 一个关于SQL的问题,做做看,好想跟经常遇到的有点不同