zoukankan      html  css  js  c++  java
  • SQL2000 和 SQL2005 下 行列转换 示例

    1.创建 学生成绩表
    2.填充 部分数据
    3.一般的直接查询
    4.Sql 2000 下 行列转换
    5.Sql 2005 下 PIVOT
    ------------
    /*
    --创建 学生成绩表

    CREATE TABLE [StuSources] (
     [StuID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [StuName] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [KeCheng] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [ChengJi] [float] NOT NULL
    ) ON [PRIMARY]

    */


    /*
    --填充 部分数据

    INSERT INTO StuSources
    SELECT '001','张三','语文',81
    UNION SELECT  '001','张三','数学',71
    UNION SELECT  '001','张三','历史',71
    UNION SELECT  '002','李四','语文',82
    UNION SELECT  '002','李四','数学',72
    UNION SELECT  '002','李四','历史',72

    */

    /*
    -- 一般的直接查询

    SELECT * FROM StuSources

    -- 结果
    StuID  StuName  KeCheng  ChengJi
    001        张三       历史       71.0
    001        张三       数学       71.0
    001        张三       语文       81.0
    002        李四       历史       72.0
    002        李四       数学       72.0
    002        李四       语文       82.0

    */

    /*
    -- Sql 2000 下 行列转换

    SELECT StuName,
    '语文' = Sum(Case KeCheng WHEN '语文' THEN ChengJi ELSE 0 END ) ,
    '数学' = Sum(Case KeCheng WHEN '数学' THEN ChengJi ELSE 0 END ),
    '历史' = Sum(Case KeCheng WHEN '历史' THEN ChengJi ELSE 0 END )
    FROM StuSources
    GROUP BY StuName

    -- 结果
    StuName  语文 数学 历史
    李四       82.0 72.0 72.0
    张三       81.0 71.0 71.0

    */

    /*
    -- Sql 2005 下 PIVOT 

    SELECT StuName,[语文] AS '语文',
    [数学] AS '数学',[历史] AS '历史'
    FROM StuSources s
    PIVOT (SUM (ChengJi) FOR KeCheng IN ([语文],[数学],[历史]) )AS pvt

    */

  • 相关阅读:
    windows C++ 网络编程
    typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
    获取屏幕分辨率(C/C++)
    随手记
    【SQLite】可视化工具SQLite studio
    C++宽窄字符串转换
    并发编程1——一个简单的多线程程序
    css中:after和:before的作用及使用方法
    uniapp—App—自定义导航栏
    vue—封装无数据时默认展示组件
  • 原文地址:https://www.cnblogs.com/zwei1121/p/713277.html
Copyright © 2011-2022 走看看