在SQL中,可以使用CASE語(yǔ)句來(lái)實(shí)現(xiàn)動(dòng)態(tài)行轉(zhuǎn)列。以下是一個(gè)示例:
假設(shè)有以下表格Student:
ID | Name | Subject | Score |
---|---|---|---|
1 | Alice | Math | 90 |
1 | Alice | English | 85 |
2 | Bob | Math | 95 |
2 | Bob | English | 80 |
我們希望將每個(gè)學(xué)生的成績(jī)按照科目轉(zhuǎn)為列,得到如下結(jié)果:
ID | Name | Math | English |
---|---|---|---|
1 | Alice | 90 | 85 |
2 | Bob | 95 | 80 |
可以使用以下SQL語(yǔ)句實(shí)現(xiàn):
SELECT
ID,
Name,
MAX(CASE WHEN Subject = 'Math' THEN Score END) AS Math,
MAX(CASE WHEN Subject = 'English' THEN Score END) AS English
FROM Student
GROUP BY ID, Name;
通過(guò)CASE語(yǔ)句,將不同科目的成績(jī)轉(zhuǎn)為對(duì)應(yīng)的列,然后使用GROUP BY按照學(xué)生的ID和姓名進(jìn)行分組,最后使用MAX函數(shù)獲取每個(gè)學(xué)生在每個(gè)科目上的成績(jī)。這樣就實(shí)現(xiàn)了動(dòng)態(tài)行轉(zhuǎn)列的效果。