Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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将在计数中显示0_Sql - Fatal编程技术网

SQL将在计数中显示0

SQL将在计数中显示0,sql,Sql,我已经写了下面的查询。但是,我无法在相应的计数中得到0。您能告诉我如何加入此查询以显示0吗 SELECT b.collected AS Last_Week_Collected, a.collected AS THIS_Week_Collected, b.errored AS Last_Week_Errored, a.errored AS THIS_Week_Errored,

我已经写了下面的查询。但是,我无法在相应的计数中得到0。您能告诉我如何加入此查询以显示0吗

SELECT  b.collected     AS Last_Week_Collected,    
        a.collected     AS THIS_Week_Collected,   
        b.errored       AS Last_Week_Errored,   
        a.errored       AS THIS_Week_Errored,   
        b.processed     AS Last_Week_Processed,   
        a.processed     AS THIS_Week_Processed    
FROM    (
            SELECT stream_id,collected, errored, processed 
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015'  
        ) a ,  
        (
            SELECT stream_id,collected,errored ,processed  
            FROM processing_Stats_Archive  
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5' 
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015'  
        ) b   
WHERE   a.stream_id=b.stream_id;

你可能想要这个输出

   SELECT COALESCE(b.collected,0) AS Last_Week_Collected
,a.collected AS THIS_Week_Collected
,COALESCE(b.errored,0) AS   Last_Week_Errored   
,a.errored AS THIS_Week_Errored   
,COALESCE(b.processed,0) AS Last_Week_Processed
,a.processed AS   THIS_Week_Processed 
FROM   
(
SELECT stream_id,collected,errored ,processed 
FROM processing_Stats_Archive
WHERE stream_id = '29'  AND HR_OF_DAY ='5' 
AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015'  
)a LEFT JOIN 
(
SELECT stream_id,collected,errored ,processed  
FROM processing_Stats_Archive 
WHERE stream_id = '29'  AND HR_OF_DAY ='5' AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015'  
) 
b ON a.stream_id=b.stream_id

你可能想要这个输出

   SELECT COALESCE(b.collected,0) AS Last_Week_Collected
,a.collected AS THIS_Week_Collected
,COALESCE(b.errored,0) AS   Last_Week_Errored   
,a.errored AS THIS_Week_Errored   
,COALESCE(b.processed,0) AS Last_Week_Processed
,a.processed AS   THIS_Week_Processed 
FROM   
(
SELECT stream_id,collected,errored ,processed 
FROM processing_Stats_Archive
WHERE stream_id = '29'  AND HR_OF_DAY ='5' 
AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015'  
)a LEFT JOIN 
(
SELECT stream_id,collected,errored ,processed  
FROM processing_Stats_Archive 
WHERE stream_id = '29'  AND HR_OF_DAY ='5' AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015'  
) 
b ON a.stream_id=b.stream_id

你可能想要这个输出

   SELECT COALESCE(b.collected,0) AS Last_Week_Collected
,a.collected AS THIS_Week_Collected
,COALESCE(b.errored,0) AS   Last_Week_Errored   
,a.errored AS THIS_Week_Errored   
,COALESCE(b.processed,0) AS Last_Week_Processed
,a.processed AS   THIS_Week_Processed 
FROM   
(
SELECT stream_id,collected,errored ,processed 
FROM processing_Stats_Archive
WHERE stream_id = '29'  AND HR_OF_DAY ='5' 
AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015'  
)a LEFT JOIN 
(
SELECT stream_id,collected,errored ,processed  
FROM processing_Stats_Archive 
WHERE stream_id = '29'  AND HR_OF_DAY ='5' AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015'  
) 
b ON a.stream_id=b.stream_id

你可能想要这个输出

   SELECT COALESCE(b.collected,0) AS Last_Week_Collected
,a.collected AS THIS_Week_Collected
,COALESCE(b.errored,0) AS   Last_Week_Errored   
,a.errored AS THIS_Week_Errored   
,COALESCE(b.processed,0) AS Last_Week_Processed
,a.processed AS   THIS_Week_Processed 
FROM   
(
SELECT stream_id,collected,errored ,processed 
FROM processing_Stats_Archive
WHERE stream_id = '29'  AND HR_OF_DAY ='5' 
AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015'  
)a LEFT JOIN 
(
SELECT stream_id,collected,errored ,processed  
FROM processing_Stats_Archive 
WHERE stream_id = '29'  AND HR_OF_DAY ='5' AND TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015'  
) 
b ON a.stream_id=b.stream_id

从语法上看,您似乎正在使用一个
Oracle
数据库。因此,
NVL
函数应该可以很好地为您工作。此外,由于您希望返回
0
,而不是
内部联接
,因此需要执行某种形式的
外部联接(根据需要,可以是左联接、右联接或完全联接)。如果要返回两个查询中的所有行,则需要使用
FULL OUTER JOIN
,如下所示:

SELECT nvl(b.collected, 0) AS Last_Week_Collected
    ,nvl(a.collected, 0) AS THIS_Week_Collected
    ,nvl(b.errored, 0) AS Last_Week_Errored
    ,nvl(a.errored, 0) AS THIS_Week_Errored
    ,nvl(b.processed, 0) AS Last_Week_Processed
    ,nvl(a.processed, 0) AS THIS_Week_Processed
FROM (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '03-09-2015'
    ) a
FULL OUTER JOIN (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '27-08-2015'
    ) b ON a.stream_id = b.stream_id;

从语法上看,您似乎正在使用一个
Oracle
数据库。因此,
NVL
函数应该可以很好地为您工作。此外,由于您希望返回
0
,而不是
内部联接
,因此需要执行某种形式的
外部联接(根据需要,可以是左联接、右联接或完全联接)。如果要返回两个查询中的所有行,则需要使用
FULL OUTER JOIN
,如下所示:

SELECT nvl(b.collected, 0) AS Last_Week_Collected
    ,nvl(a.collected, 0) AS THIS_Week_Collected
    ,nvl(b.errored, 0) AS Last_Week_Errored
    ,nvl(a.errored, 0) AS THIS_Week_Errored
    ,nvl(b.processed, 0) AS Last_Week_Processed
    ,nvl(a.processed, 0) AS THIS_Week_Processed
FROM (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '03-09-2015'
    ) a
FULL OUTER JOIN (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '27-08-2015'
    ) b ON a.stream_id = b.stream_id;

从语法上看,您似乎正在使用一个
Oracle
数据库。因此,
NVL
函数应该可以很好地为您工作。此外,由于您希望返回
0
,而不是
内部联接
,因此需要执行某种形式的
外部联接(根据需要,可以是左联接、右联接或完全联接)。如果要返回两个查询中的所有行,则需要使用
FULL OUTER JOIN
,如下所示:

SELECT nvl(b.collected, 0) AS Last_Week_Collected
    ,nvl(a.collected, 0) AS THIS_Week_Collected
    ,nvl(b.errored, 0) AS Last_Week_Errored
    ,nvl(a.errored, 0) AS THIS_Week_Errored
    ,nvl(b.processed, 0) AS Last_Week_Processed
    ,nvl(a.processed, 0) AS THIS_Week_Processed
FROM (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '03-09-2015'
    ) a
FULL OUTER JOIN (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '27-08-2015'
    ) b ON a.stream_id = b.stream_id;

从语法上看,您似乎正在使用一个
Oracle
数据库。因此,
NVL
函数应该可以很好地为您工作。此外,由于您希望返回
0
,而不是
内部联接
,因此需要执行某种形式的
外部联接(根据需要,可以是左联接、右联接或完全联接)。如果要返回两个查询中的所有行,则需要使用
FULL OUTER JOIN
,如下所示:

SELECT nvl(b.collected, 0) AS Last_Week_Collected
    ,nvl(a.collected, 0) AS THIS_Week_Collected
    ,nvl(b.errored, 0) AS Last_Week_Errored
    ,nvl(a.errored, 0) AS THIS_Week_Errored
    ,nvl(b.processed, 0) AS Last_Week_Processed
    ,nvl(a.processed, 0) AS THIS_Week_Processed
FROM (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '03-09-2015'
    ) a
FULL OUTER JOIN (
    SELECT stream_id
        ,collected
        ,errored
        ,processed
    FROM processing_Stats_Archive
    WHERE stream_id = '29'
        AND HR_OF_DAY = '5'
        AND TO_CHAR(batch_Creation_date, 'DD-MON-YY') = '27-08-2015'
    ) b ON a.stream_id = b.stream_id;

其思想是,如果没有任何类型的连接或聚合函数(如MAX),则没有任何类型的连接或聚合函数(如MAX)可以帮助您。您应该使用单独的查询来检索单个“已收集”、“已出错”和“已处理”列,并将它们合并为0。我在这里的回答中使用了
NVL
,认为您使用的是Oracle DBMS

试试这个:

SELECT (
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0)
        AS THIS_Week_Errored, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Processed ) 
        UNION
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0)
        AS Last_Week_Collected, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Processed )
    FROM DUAL

其思想是,如果没有任何类型的连接或聚合函数(如MAX),则没有任何类型的连接或聚合函数(如MAX)可以帮助您。您应该使用单独的查询来检索单个“已收集”、“已出错”和“已处理”列,并将它们合并为0。我在这里的回答中使用了
NVL
,认为您使用的是Oracle DBMS

试试这个:

SELECT (
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0)
        AS THIS_Week_Errored, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Processed ) 
        UNION
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0)
        AS Last_Week_Collected, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Processed )
    FROM DUAL

其思想是,如果没有任何类型的连接或聚合函数(如MAX),则没有任何类型的连接或聚合函数(如MAX)可以帮助您。您应该使用单独的查询来检索单个“已收集”、“已出错”和“已处理”列,并将它们合并为0。我在这里的回答中使用了
NVL
,认为您使用的是Oracle DBMS

试试这个:

SELECT (
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0)
        AS THIS_Week_Errored, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Processed ) 
        UNION
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0)
        AS Last_Week_Collected, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Processed )
    FROM DUAL

其思想是,如果没有任何类型的连接或聚合函数(如MAX),则没有任何类型的连接或聚合函数(如MAX)可以帮助您。您应该使用单独的查询来检索单个“已收集”、“已出错”和“已处理”列,并将它们合并为0。我在这里的回答中使用了
NVL
,认为您使用的是Oracle DBMS

试试这个:

SELECT (
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0)
        AS THIS_Week_Errored, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '03-09-2015' ,0) 
        AS THIS_Week_Processed ) 
        UNION
        NVL(SELECT collected
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0)
        AS Last_Week_Collected, 
            NVL(SELECT errored
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Errored,
            NVL (SELECT processed
            FROM processing_Stats_Archive 
            WHERE stream_id = '29'  
            AND HR_OF_DAY ='5'  
            AND TO_CHAR(batch_Creation_date,'DD-MON-YY') =  '27-08-2015' ,0) 
        AS Last_Week_Processed )
    FROM DUAL

您可以使用条件聚合执行此操作:

SELECT  NVL(Last_Week_Collected, 0) AS Last_Week_Collected,
        NVL(THIS_Week_Collected, 0) AS THIS_Week_Collected,
        NVL(Last_Week_Errored, 0) AS Last_Week_Errored,
        NVL(THIS_Week_Errored, 0) AS THIS_Week_Errored,
        NVL(Last_Week_Processed, 0) AS Last_Week_Processed,
        NVL(THIS_Week_Processed, 0) AS THIS_Week_Processed
FROM    
(   SELECT  MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN collected ELSE 0 END) AS Last_Week_Collected,    
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN collected ELSE 0 END) AS THIS_Week_Collected,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN errored ELSE 0 END) AS Last_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN errored ELSE 0 END) AS THIS_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN processed ELSE 0 END) AS Last_Week_Processed,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN processed ELSE 0 END) AS THIS_Week_Processed   
    FROM    processing_Stats_Archive 
    WHERE   stream_id = '29'  
    AND     HR_OF_DAY ='5'   
    AND     TO_CHAR(batch_Creation_date,'DD-MON-YY') IN ('27-08-2015', '03-09-2015')
) t;
您当前的查询只有在每周有一行的情况下才有效,因此我假设情况就是这样。因此,尽管我已经应用了
MAX
函数,但它是一行的
MAX
,因此没有任何意义


这是一个标量聚合,也就是说它有一个聚合函数,没有group by,无论是否有数据,它都将始终返回一行。

您可以使用条件聚合:

SELECT  NVL(Last_Week_Collected, 0) AS Last_Week_Collected,
        NVL(THIS_Week_Collected, 0) AS THIS_Week_Collected,
        NVL(Last_Week_Errored, 0) AS Last_Week_Errored,
        NVL(THIS_Week_Errored, 0) AS THIS_Week_Errored,
        NVL(Last_Week_Processed, 0) AS Last_Week_Processed,
        NVL(THIS_Week_Processed, 0) AS THIS_Week_Processed
FROM    
(   SELECT  MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN collected ELSE 0 END) AS Last_Week_Collected,    
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN collected ELSE 0 END) AS THIS_Week_Collected,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN errored ELSE 0 END) AS Last_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN errored ELSE 0 END) AS THIS_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN processed ELSE 0 END) AS Last_Week_Processed,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN processed ELSE 0 END) AS THIS_Week_Processed   
    FROM    processing_Stats_Archive 
    WHERE   stream_id = '29'  
    AND     HR_OF_DAY ='5'   
    AND     TO_CHAR(batch_Creation_date,'DD-MON-YY') IN ('27-08-2015', '03-09-2015')
) t;
您当前的查询只有在每周有一行的情况下才有效,因此我假设情况就是这样。因此,尽管我已经应用了
MAX
函数,但它是一行的
MAX
,因此没有任何意义


这是一个标量聚合,也就是说它有一个聚合函数,没有group by,无论是否有数据,它都将始终返回一行。

您可以使用条件聚合:

SELECT  NVL(Last_Week_Collected, 0) AS Last_Week_Collected,
        NVL(THIS_Week_Collected, 0) AS THIS_Week_Collected,
        NVL(Last_Week_Errored, 0) AS Last_Week_Errored,
        NVL(THIS_Week_Errored, 0) AS THIS_Week_Errored,
        NVL(Last_Week_Processed, 0) AS Last_Week_Processed,
        NVL(THIS_Week_Processed, 0) AS THIS_Week_Processed
FROM    
(   SELECT  MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN collected ELSE 0 END) AS Last_Week_Collected,    
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN collected ELSE 0 END) AS THIS_Week_Collected,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN errored ELSE 0 END) AS Last_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN errored ELSE 0 END) AS THIS_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN processed ELSE 0 END) AS Last_Week_Processed,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN processed ELSE 0 END) AS THIS_Week_Processed   
    FROM    processing_Stats_Archive 
    WHERE   stream_id = '29'  
    AND     HR_OF_DAY ='5'   
    AND     TO_CHAR(batch_Creation_date,'DD-MON-YY') IN ('27-08-2015', '03-09-2015')
) t;
您当前的查询只有在每周有一行的情况下才有效,因此我假设情况就是这样。因此,尽管我已经应用了
MAX
函数,但它是一行的
MAX
,因此没有任何意义


这是一个标量聚合,也就是说它有一个聚合函数,没有group by,无论是否有数据,它都将始终返回一行。

您可以使用条件聚合:

SELECT  NVL(Last_Week_Collected, 0) AS Last_Week_Collected,
        NVL(THIS_Week_Collected, 0) AS THIS_Week_Collected,
        NVL(Last_Week_Errored, 0) AS Last_Week_Errored,
        NVL(THIS_Week_Errored, 0) AS THIS_Week_Errored,
        NVL(Last_Week_Processed, 0) AS Last_Week_Processed,
        NVL(THIS_Week_Processed, 0) AS THIS_Week_Processed
FROM    
(   SELECT  MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN collected ELSE 0 END) AS Last_Week_Collected,    
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN collected ELSE 0 END) AS THIS_Week_Collected,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN errored ELSE 0 END) AS Last_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN errored ELSE 0 END) AS THIS_Week_Errored,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '27-08-2015' THEN processed ELSE 0 END) AS Last_Week_Processed,   
            MAX(CASE WHEN TO_CHAR(batch_Creation_date,'DD-MON-YY')= '03-09-2015' THEN processed ELSE 0 END) AS THIS_Week_Processed   
    FROM    processing_Stats_Archive 
    WHERE   stream_id = '29'  
    AND     HR_OF_DAY ='5'   
    AND     TO_CHAR(batch_Creation_date,'DD-MON-YY') IN ('27-08-2015', '03-09-2015')
) t;
您当前的查询只有在每周有一行的情况下才有效,因此我假设情况就是这样。因此,尽管我已经应用了
MAX
函数,但它是一行的
MAX
,因此没有任何意义


这是一个标量聚合,也就是说它有一个聚合函数,没有group by,无论是否有数据,它都将始终返回一行。

请尝试格式化查询。无法理解que。您可能需要的是一个而不是您编写的隐式内部联接。然后您可以使用
COALESCE
将您的
NULL
缺少的结果更改为0。您能帮我做一下吗