在sql select中转置每一行

mnowg1ta  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(369)

以下sql

SELECT concat('CSE_', course_code), concat('CS_', course_code)
FROM classes

这会返回如下结果:

CSE_210   CS_210
CSE_570   CS_570
CSE_480   CS_480

相反,我需要

CSE_270
CS_270
CSE_570
CS_570
CSE_480
CS_480

i、 e.每行换位。正是这样的顺序。
使用sql实现这一点的最佳方法是什么?

ie3xauqp

ie3xauqp1#

最简单的方法是 union all :

SELECT concat('CSE_', course_code)
FROM classes
UNION ALL
SELECT concat('CS_', course_code)
FROM classes;

但是,通常使用 CROSS JOIN :

SELECT concat(v.prefix, c.course_code)
FROM classes c CROSS JOIN
     (VALUES ('CSE_', 1), ('CS_', 2)) v(prefix, ord)
ORDER BY c.course_code, v.ord;

相关问题