我有一个返回整行的查询,我需要将此结果转换到一个新表中。
SELECT id_no, stud_name, group_no, class_1, class_2, class_3, class_4 FROM tbl_stud_class
Run Code Online (Sandbox Code Playgroud)
这将返回以下内容:
| id_no | stud_name | group_no | class_1 | class_2 | class_3 | class 4 |
| 1 | John Doe | A11 | 84 | 60 | 80 | 79 |
Run Code Online (Sandbox Code Playgroud)
我需要能够将这一行返回为:
| id_no | stud_name | group_no | class | grade |
| 1 | John Doe | A11 | class_1 | 84 |
| 1 | John Doe | A11 | class_2 | 60 |
| 1 | John Doe | A11 | class_3 | 80 |
| 1 | John Doe | A11 | class_4 | 79 |
Run Code Online (Sandbox Code Playgroud)
有人可以指点我一种方法吗?我正在转换我的 PostgreSQL 函数(我使用 CROSS JOIN LATERAL 到 SQL Server)
谢谢你!
另一种选择是使用 CROSS APPLY
例子
Select A.id_no
,A.stud_name
,A.group_no
,B.*
From YourTable A
Cross Apply ( values ('class_1',class_1)
,('class_2',class_2)
,('class_3',class_3)
,('class_4',class_4)
) B(class,grade)
Run Code Online (Sandbox Code Playgroud)
退货
id_no stud_name group_no class grade
1 John Doe A11 class_1 84
1 John Doe A11 class_2 60
1 John Doe A11 class_3 80
1 John Doe A11 class_4 79
Run Code Online (Sandbox Code Playgroud)