列转行--行转列问题(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:32 点击:
                             MAX(CASE WHEN Subject='数学' THEN Score ELSE 0 END) AS "数学",
                             MAX(CASE WHEN Subject='英语' THEN Score ELSE 0 END) AS "英语",
                             MAX(CASE WHEN Subject='生物' THEN Score ELSE 0 END) AS "生物"
                 FROM StudentScores
                 GROUP BY UserName;
     讨论:
         实现上述需求的关键在于,多个case when与group by的配合使用;下面我们来
         分析下sql的执行过程:
                 我们手下看下select子句,可以确定要查询的结果集中有5列,username、语文、数学、英  www.2cto.com  
                 语、生物;拿出表中第一条记录多数据处理得出的结果集:
                     Username          语文     数学   英语     生物
                            Nick              80            0          0            0           
                 80是由CASE WHEN Subject='语文' THEN Score ELSE 0 END得出,其他的0分别是由CASE WHEN
                    Subject='数学' THEN Score ELSE 0 END、CASE WHEN Subject='英语' THEN Score ELSE 0 END、
                    CASE WHEN Subject='生物' THEN Score ELSE 0 END得出,一次类推,得到的结果集为
                     Username          语文     数学   英语     生物
                          Nick               80       0       0         0
                          Nike               0        90      0         0
                           Nike               0        0       70        0

相关新闻>>

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Request.ServerVariables 参数大全
    • 执行全文索引时出现权限不足的解决方法
    • 导入excel文件处理流程节点的解决方案
    • 查看sql修改痕迹(SQL Change Tracking on Table)
    • MongoDB安装为Windows服务方法与注意事项
    • App数据层设计及云存储使用指南
    • PostgreSQL启动过程中的那些事三:加载GUC参数
    • 写给MongoDB开发者的50条建议Tip1
    • Percolator与分布式事务思考(二)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1