SQL(行列转置问题)

被产品同事问到一个SQL相关的行列转置问题,顺便记录一下。

【题目如下】

.

.

.

.

.

.

.

.

.

.

.

【个人解法】

***********************************************************************

--方法一:适用于行数量少
select class_id,
max(case grade when 'primary' then rate else '0' end) as 'primary',
max(case grade when 'middle' then rate else '0' end) as 'middle',
max(case grade when 'high' then rate else '0' end) as 'high'
from tableone
group by class_id

--方法二:适用于行数量多
DECLARE @sql VARCHAR(MAX)

SET @sql = 'select class_id'
SELECT @sql = @sql + ',max(case grade when ''' + grade
+ ''' then rate else ''0'' end) as [' + grade + ']'
FROM ( SELECT DISTINCT
grade
FROM tableone
) a
SET @sql = @sql + ' from tableone group by class_id'
print(@sql)
exec(@sql)

***********************************************************************

3



微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

SQL(行列转置问题)
嘿!有什么能帮到您的吗?
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close