sql多方法实现列转行

CREATE TABLE StudentScore2 (
    [UserName] NVARCHAR(50),
    [语文] FLOAT,
    [数学] FLOAT,
    [英语] FLOAT,
    [物理] FLOAT
)


INSERT INTO StudentScore2(UserName, [语文], [数学], [英语], [物理])
VALUES
('Helen', 100, 90, 85, 80),
('Jack', 75, 90, 85, 100)


SELECT * FROM StudentScore2


-----传统列转行方法 (UNION ALL与GROUP BY)
SELECT UserName, '语文' AS Course, 
        MAX([语文]) AS Score 
FROM StudentScore2 
GROUP BY UserName 
UNION ALL
SELECT UserName, '数学' AS Course, 
        MAX([数学]) AS Score 
FROM StudentScore2 
GROUP BY UserName 
UNION ALL
SELECT UserName, '英语' AS Course, 
        MAX([英语]) AS Score 
FROM StudentScore2 
GROUP BY UserName 
UNION ALL
SELECT UserName, '物理' AS Course, 
        MAX([物理]) AS Score 
FROM StudentScore2 
GROUP BY UserName 




----使用UNPIVOT实现列转行
SELECT UserName, Score, Course
FROM StudentScore2
UNPIVOT
(
    Score FOR Course IN (语文, 数学, 英语, 物理)
) T


--也可以使用 *
SELECT *
FROM StudentScore2
UNPIVOT
(
    Score FOR Course IN (语文, 数学, 英语, 物理)
) T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值