我们在应用中通常会遇到需要行转列的情况。
比如一个成绩表。表通常会这样设计:
学生号 科目 成绩
01 语文 80
01 英语 90
02 语文 60
........................
然后可能客户需要的是这样的信息呈现:
学生号 语文 英语 数学 ....
01 80 90
02 60
.......................................
这种情况我们就会需要行转列。
使用case when来依条件分列是最简单的一种方法。
然后当这种条件分支不清晰,转换后列数不固定的情况下呢?对照上面的例子来说就是,假设我并不知道学生学了哪些科目的时候应该怎么做?
我们继续用case when,但是由于列的不固定,需要先根据条件分支产生的可能性来拼接一下语句再动态执行。直接上码看效果可能更清晰一点: