SQL Server之纵表与横表互转

1,纵表转横表

纵表结构 Table_A:

转换后的结构:

纵表转横表的SQL示例:

SELECT  Name ,
        SUM(CASE WHEN Course = N'语文' THEN Grade
                 ELSE 0
            END) AS Chinese ,
        SUM(CASE WHEN Course = N'数学' THEN Grade
                 ELSE 0
            END) AS Mathematics ,
        SUM(CASE WHEN Course = N'英语' THEN Grade
                 ELSE 0
            END) AS English
FROM    dbo.Table_A
GROUP BY Name

2,横表转纵表

横表结构Table_B:

转换后的表结构:

横表转纵表的SQL示例:

SELECT  Name ,
        'Chinese' AS Course ,
        Chinese AS Score
FROM    dbo.Table_B
UNION ALL
SELECT  Name ,
        'Mathematics' AS Course ,
        Mathematics AS Score
FROM    dbo.Table_B
UNION ALL
SELECT  Name ,
        'English' AS Course ,
        English AS Score
FROM    dbo.Table_B
ORDER BY Name ,
        Course DESC

 

posted @ 2016-09-18 08:52  joesphos  阅读(5720)  评论(0编辑  收藏  举报

如果您认为这篇文章还不错或者有所收获,您可以打赏点哦,多多少少没关系,一分一毫也是对我的支持和鼓励。谢谢您!