在SQL中,可以使用CASE語句來實現動態行轉列。以下是一個示例:
假設有以下表格Student:
ID | Name | Subject | Score |
---|---|---|---|
1 | Alice | Math | 90 |
1 | Alice | English | 85 |
2 | Bob | Math | 95 |
2 | Bob | English | 80 |
我們希望將每個學生的成績按照科目轉為列,得到如下結果:
ID | Name | Math | English |
---|---|---|---|
1 | Alice | 90 | 85 |
2 | Bob | 95 | 80 |
可以使用以下SQL語句實現:
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;
通過CASE語句,將不同科目的成績轉為對應的列,然后使用GROUP BY按照學生的ID和姓名進行分組,最后使用MAX函數獲取每個學生在每個科目上的成績。這樣就實現了動態行轉列的效果。