列转行--行转列问题(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文件处理流程节点的解决方案
    • MongoDB安装为Windows服务方法与注意事项
    • 查看sql修改痕迹(SQL Change Tracking on Table)
    • App数据层设计及云存储使用指南
    • PostgreSQL启动过程中的那些事三:加载GUC参数
    • Percolator与分布式事务思考(二)
    • 写给MongoDB开发者的50条建议Tip1
    ?? - ?? - ÝřŝžľŘÝź - TAGąęÇŠ - RSSśŠÔÄ - ??
    Copyright © 2004-2024 上海卓卓网络科技有限公司