sql動(dòng)態(tài)行轉(zhuǎn)列怎么實(shí)現(xiàn)

sql
小億
92
2024-08-01 21:22:12
欄目: 云計(jì)算

在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)列的效果。

0