行转列,列转行的代码是不是在tidb里面用不了?

2、行转列

select * from student_score
as P
PIVOT
(
sum(score) for
p.subject IN ([语文],[数学],[英语],[生物])

行转列,列转行的代码是不是在tidb里面用不了?

PIVOT行转列函数只有oracle和postgresql吧?mysql也不支持

貌似是的,我在navicat输入这个函数是不识别的。

建议用聚合函数和case函数替代写法:
SELECT
username,
SUM(CASE WHEN subject = ‘语文’ THEN score ELSE 0 END) AS “语文”,
SUM(CASE WHEN subject = ‘数学’ THEN score ELSE 0 END) AS “数学”,
SUM(CASE WHEN subject = ‘英语’ THEN score ELSE 0 END) AS “英语”,
SUM(CASE WHEN subject = ‘生物’ THEN score ELSE 0 END) AS “生物”
FROM scores
GROUP BY username;

是的,应该是不支持的。

谢谢,学到了。非常感谢。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。