SQL查询:在查询结果中添加缺少的天数

SQL查询:在查询结果中添加缺少的天数,sql,oracle,Sql,Oracle,我不是sql专家 我提出这个问题: SELECT CAST(SUBSTR(FEHLER.LosID,5,2) as INT), Sum(FEHLER.FehlerSumme) FROM BLA.FEHLER FEHLER WHERE (FEHLER.MAE=7) AND (FEHLER.LosID>16100100) GROUP BY CAST(SUBSTR(FEHLER.LosID,5,2) as INT) ORDER BY CAST(SUBSTR(FEHLER.LosID,5,2) a

我不是sql专家

我提出这个问题:

SELECT CAST(SUBSTR(FEHLER.LosID,5,2) as INT), Sum(FEHLER.FehlerSumme)
FROM BLA.FEHLER FEHLER
WHERE (FEHLER.MAE=7) AND (FEHLER.LosID>16100100)
GROUP BY CAST(SUBSTR(FEHLER.LosID,5,2) as INT)
ORDER BY CAST(SUBSTR(FEHLER.LosID,5,2) as INT)
例如,结果是:

(Column 1 = Day | Column 2 = Sum defective parts)
2 | 18
3 | 7
9 | 5
但我需要这样的东西:

1 | (0 oder NULL)
2 | 18
3 | 7
4 |
5 |
6 |
7 |
8 |
9 | 5
...
31 | 
所以我想在上面加入这个查询,但我没有成功

从“按级别双连接”中选择级别Oracle 如果表中每天都有数据,但WHERE子句过滤掉了某一天,则可以使用条件聚合解决此问题:

SELECT CAST(SUBSTR(f.LosID, 5, 2) as INT),
       Sum(case when f.MAE = 7 AND f.LosID > 16100100
                then FEHLER.FehlerSumme
           end)
FROM BLA.FEHLER f
GROUP BY CAST(SUBSTR(f.LosID, 5, 2) as INT)
ORDER BY CAST(SUBSTR(FEHLER.LosID, 5, 2) as INT);

这并非在所有情况下都有效,但在许多情况下,它为此类问题提供了一个简单的解决方案。

那么,Excel、SQL Server还是Oracle?Oracle和SQL Server是两种截然不同的DBMS产品。它在Excel中。SQL查询到Oracle-Database。哦,好的。谢谢我明天就试试@如果您喜欢0而不是NULL,那么您可以在第二行代码中轻松地做到这一点;您可以选择coalescer.n,0代替r.n。COALESCE返回其第一个参数,除非第一个参数为NULL,否则它将返回第二个参数。在Oracle中,它也经常被写成nvlr.n,0。
SELECT CAST(SUBSTR(f.LosID, 5, 2) as INT),
       Sum(case when f.MAE = 7 AND f.LosID > 16100100
                then FEHLER.FehlerSumme
           end)
FROM BLA.FEHLER f
GROUP BY CAST(SUBSTR(f.LosID, 5, 2) as INT)
ORDER BY CAST(SUBSTR(FEHLER.LosID, 5, 2) as INT);