繁体   English   中英

在SQL中使用列名获取非空值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM