[英]Fetching non-null values with column names in SQL
我的桌子-学生的表格
Student Subject1 Subject2
A 123 1
B 4
C 122
我想获取学生的所有非空记录以及列名注意:仅应显示非空记录
所以当我查询学生AI时
Subject1 123
Subject2 1
当我查询学生BI应该得到
Subject2 4
当我查询学生CI时应获得Subject1 122
我想动态生成列名。 谢谢您的帮助!
可以按照以下步骤进行:
SELECT *
FROM
(
WITH A AS
(
SELECT 'A' AS STUDENT, 123 AS SUBJECT1, 1 AS SUBJECT2 FROM DUAL
UNION
SELECT 'B' AS STUDENT, NULL AS SUBJECT1, 4 AS SUBJECT2 FROM DUAL
UNION
SELECT 'C' AS STUDENT, 122 AS SUBJECT1, NULL AS SUBJECT2 FROM DUAL
)
SELECT *
FROM
A
UNPIVOT
(
MARKS FOR SUBJECT IN (SUBJECT1, SUBJECT2)
)
)
WHERE
STUDENT = 'A';
输出-
STUDENT,SUBJECT,MARKS
A,SUBJECT1,123
A,SUBJECT2,1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.