Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用多个计数重新构造视图:将每个计数输出为一行,而不是一列_Sql_Database_View_Plsql_Count - Fatal编程技术网

Sql 使用多个计数重新构造视图:将每个计数输出为一行,而不是一列

Sql 使用多个计数重新构造视图:将每个计数输出为一行,而不是一列,sql,database,view,plsql,count,Sql,Database,View,Plsql,Count,我的视图将每个计数的结果作为一列输出。我需要重新构造下面的代码,以便将每个计数作为一行输出:一列标识计数,一列标识计数结果。任何帮助都将不胜感激 CREATE OR REPLACE VIEW oa_count_ii AS SELECT COUNT( CASE WHEN cap_udfi IN ('NEW_ENT','IRP_RVW') AND mhd_mscc = 'ADMUHFLSCP' THEN 1 END ) newapp_admuhflscp, COUNT( CASE WHEN ca

我的视图将每个计数的结果作为一列输出。我需要重新构造下面的代码,以便将每个计数作为一行输出:一列标识计数,一列标识计数结果。任何帮助都将不胜感激

CREATE OR REPLACE VIEW oa_count_ii
AS
SELECT COUNT(
CASE
WHEN cap_udfi IN ('NEW_ENT','IRP_RVW')
AND mhd_mscc   = 'ADMUHFLSCP'
THEN 1
END ) newapp_admuhflscp,
COUNT(
CASE
WHEN cap_udfi IN   ('APF_RVW','RVW_RVW','TUT_RVW','TU2_RVW','TUT_DC1','TU2_DC1','RVW_IRP','IRP_IIO','IRP_DC1','IIO_DC1','RECALL')
AND cap_dec1   = 'No Decision'
AND mhd_mscc   = 'ADMUHFLSCP'
AND mhd_tsks   = 'P'
THEN 1
END ) apfrvw_admuhflscp,
COUNT(
CASE
WHEN cap_udfi IN ('RVW_TUT','TUT_TU2')
AND mhd_mscc  IN ('FACPSYCHL1','FACPSYCHL2')
AND mhd_tsks   ='T'
THEN 1
END ) rvwtutw_admuhflscp,
FROM oa_intray;

由于这三个计数似乎完全相互排斥,您可以这样做:

CREATE OR REPLACE VIEW oa_count_ii AS
SELECT dl.count_type, count(ilv.count_type) record_count from
(SELECT CASE level
            WHEN 1 THEN 'newapp_admuhflscp'
            WHEN 2 THEN 'apfrvw_admuhflscp'
            WHEN 3 THEN 'rvwtutw_admuhflscp'
        END count_type
 FROM DUAL
 CONNECT BY level <= 3) dl
LEFT JOIN
(SELECT CASE
            WHEN cap_udfi IN ('NEW_ENT','IRP_RVW')
             AND mhd_mscc   = 'ADMUHFLSCP'
                THEN 'newapp_admuhflscp'
            WHEN cap_udfi IN   ('APF_RVW','RVW_RVW','TUT_RVW','TU2_RVW','TUT_DC1','TU2_DC1','RVW_IRP','IRP_IIO','IRP_DC1','IIO_DC1','RECALL')
             AND cap_dec1   = 'No Decision'
             AND mhd_mscc   = 'ADMUHFLSCP'
             AND mhd_tsks   = 'P'
                THEN 'apfrvw_admuhflscp'
            WHEN cap_udfi IN ('RVW_TUT','TUT_TU2')
             AND mhd_mscc  IN ('FACPSYCHL1','FACPSYCHL2')
             AND mhd_tsks   ='T'
                THEN 'rvwtutw_admuhflscp'
        END count_type
 FROM oa_intray) ilv
ON dl.count_type = ilv.count_type
GROUP BY dl.count_type;

由于这三个计数似乎完全相互排斥,您可以这样做:

CREATE OR REPLACE VIEW oa_count_ii AS
SELECT dl.count_type, count(ilv.count_type) record_count from
(SELECT CASE level
            WHEN 1 THEN 'newapp_admuhflscp'
            WHEN 2 THEN 'apfrvw_admuhflscp'
            WHEN 3 THEN 'rvwtutw_admuhflscp'
        END count_type
 FROM DUAL
 CONNECT BY level <= 3) dl
LEFT JOIN
(SELECT CASE
            WHEN cap_udfi IN ('NEW_ENT','IRP_RVW')
             AND mhd_mscc   = 'ADMUHFLSCP'
                THEN 'newapp_admuhflscp'
            WHEN cap_udfi IN   ('APF_RVW','RVW_RVW','TUT_RVW','TU2_RVW','TUT_DC1','TU2_DC1','RVW_IRP','IRP_IIO','IRP_DC1','IIO_DC1','RECALL')
             AND cap_dec1   = 'No Decision'
             AND mhd_mscc   = 'ADMUHFLSCP'
             AND mhd_tsks   = 'P'
                THEN 'apfrvw_admuhflscp'
            WHEN cap_udfi IN ('RVW_TUT','TUT_TU2')
             AND mhd_mscc  IN ('FACPSYCHL1','FACPSYCHL2')
             AND mhd_tsks   ='T'
                THEN 'rvwtutw_admuhflscp'
        END count_type
 FROM oa_intray) ilv
ON dl.count_type = ilv.count_type
GROUP BY dl.count_type;

谢谢你,马克。这段代码几乎满足了我的需要,但如果我需要count_type始终显示,即使该计数的结果为“零”,该怎么办?谢谢谢谢你,马克。这段代码几乎满足了我的需要,但如果我需要count_type始终显示,即使该计数的结果为“零”,该怎么办?谢谢