温故简单SQL行列转换 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    温故简单SQL行列转换

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    Sql代码

    -- 创建表

    CREATE TABLE T_Score(

    ScoreId INT IDENTITY (1,1) NOT NULL,

    StuName NVARCHAR(50),

    Subject NVARCHAR(50),

    Score  INT

    )

    -- 插入数据

    INSERT INTO T_Score(StuName,Subject,Score)

    SELECT '李四','英语',88 UNION ALL

    SELECT '李四','语文',99 UNION ALL

    SELECT '李四','化学',78 UNION ALL

    SELECT '李四','历史',82 UNION ALL

    SELECT '李四','物理',98 UNION ALL

    SELECT '王五','英语',89 UNION ALL

    SELECT '刘萍','英语',77 UNION ALL

    SELECT '刘萍','语文',68 UNION ALL

    SELECT '王六','英语',81 UNION ALL

    SELECT '马林','英语',84

    --行列转换(显示数据)

    DECLARE @SQL VARCHAR(8000)

    SET @SQL='SELECT StuName AS 姓名'

    SELECT @SQL=@SQL+',SUM(CASE Subject WHEN '''+Subject+''' THEN Score ELSE 0 END) ['+Subject+']'

    FROM (SELECT DISTINCT Subject FROM T_Score) AS tt

    SELECT @SQL=@SQL+' FROM T_Score GROUP BY StuName'

    EXEC(@SQL)

最新文章