sql server纵表变横表

例子一
1.创建视图存储复杂的select语句
create view Student_Score
as
select stu.sName,sub.sTitle,score.scoreValue
from ScoreInfo score
inner join SubjectInfo sub on sub.sId=score.subId
inner join StudentInfo stu on stu.sId=score.stuId
2.纵表变横表
select sName 姓名,
–如果当前的STitle的值是"语文",则输出ScoreValue
max(case sTitle when ‘语文’ then scoreValue end) 语文,
min(case when sTitle=‘数学’ then scoreValue end) 数学,
sum(case sTitle when ‘英语’ then scoreValue end) 英语
from Student_Score
group by sName–不加这个一个人会出现多次
例子二
–班级 男生 女生
–青龙 1 2
1.创建视图存储复杂语句
create view Student_Class_Gender
as
select cTitle,sGender,COUNT(*) as count1
from StudentInfo stu
inner join ClassInfo class on stu.cid=class.cId
group by cTitle,sGender
–cTitle,sGender,count1
–青龙 男 2

2.纵表变横表
select cTitle,
max(case sGender when 1 then count1 else 0 end) 男,
max(case when sGender=0 then count1 else 0 end) 女
from Student_Class_Gender
group by cTitle

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值