• 行列轉換方法


    ---drop table tb

    create table tb(姓名 nvarchar(10) , 课程 nvarchar(10) , 分数 int)

    insert into tb values(N'张三' , N'语文' , 74)

    insert into tb values(N'张三' , N'数学' , 83)

    insert into tb values(N'张三' , N'物理' , 93)

    insert into tb values(N'李四' , N'语文' , 74)

    insert into tb values(N'李四' , N'数学' , 84)

    insert into tb values(N'李四' , N'物理' , 94)

    go

    select * from tb

    --SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)

    select 姓名 as 姓名 ,

    max(case 课程 when N'语文' then 分数 else 0 end) 语文,

    max(case 课程 when N'数学' then 分数 else 0 end) 数学,

    max(case 课程 when N'物理' then 分数 else 0 end) 物理

    from tb

    group by 姓名

    --SQL SERVER 2005 静态SQL。
    select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b


    --更為詳細一D的

    SELECT 姓名,
    语文 AS N'语文',
    数学 AS N'数学',
    物理 AS N'物理' --相當於每列的內容,也就是相當 Other欄位以課程來擺成列時,當等於物理時取的值
    FROM tb
    PIVOT (SUM(分数) FOR 课程 in (语文,数学,物理) ) AS pvt
    --FOR後面的內容是一個欄位,IN的內容是欄位裡各種CASE

  • 相关阅读:
    【开源】知乎日报UWP 更新
    【开源】知乎日报UWP 更新
    耿丹学院软工助教(2016年上半年)
    c++ STL map 结构体
    2016搜狐笔试二叉树和最大的子树
    从B树、B+树、B*树谈到R 树
    C++继承:公有,私有,保护
    循环队列
    C++中的static关键字
    c++map的用法
  • 原文地址:https://www.cnblogs.com/guyuehuanhuan/p/1942271.html
Copyright © 2020-2023  润新知