2013-04-13 76 views
1

我想寫一個SQL查詢來顯示每個類別的總和。 問題是我需要每個類別的總和,即使總和爲零,它仍應顯示結果。檢查並顯示MS Access查詢中的空值

我正在通過使用DAL層來做到這一點,所以通過C#和我正在使用訪問2010數據庫。

這是我目前工作的查詢:

SELECT  SUM(f.bedrag) AS totaal, c.omschrijving, Limiet.maximumBedrag 
FROM   ((Financien f INNER JOIN 
         Categorie c ON f.categorieId = c.id) INNER JOIN 
         Limiet ON f.limietId = Limiet.id) 
WHERE  (f.inkomstOfUitgave = 1) 
GROUP BY f.categorieId, c.omschrijving, Limiet.maximumBedrag 

現在的SUM函數的頂部我還需要檢查空值,如果一個類別的總和爲0它應該顯示0中的全部結果現在被過濾掉了,但我必須看到它們。

有人知道如何解決它嗎?我試過IsNull()NZ,但我無法工作。 以下是查詢結果的屏幕截圖。你可以看到我得到兩個結果,但如果查詢將顯示總和爲0的結果,我應該得到7。

任何人都知道如何解決這個問題?

回答

0

同樣顯示0值的答案是: 答案是由「drch」做出的,我非常感謝他! :)

SUM(IIF(IsNULL(f.bedrag), 0, f.bedrag)) AS bedrag 

還有那裏有很多其他的事情太多錯誤,這是完整的查詢:

SELECT  c.omschrijving as Omschrijving, SUM(IIF(IsNULL(f.bedrag), 0, f.bedrag)) AS bedrag, l.maximumBedrag as maximumBedrag 
FROM   ((Categorie c LEFT OUTER JOIN 
         Financien f ON f.categorieId = c.id) LEFT OUTER JOIN 
         Limiet l ON l.categorieId = c.id) 
WHERE  (f.inkomstOfUitgave IS NULL) OR 
         (f.inkomstOfUitgave = 1) 
GROUP BY c.id, f.categorieId, c.omschrijving, l.maximumBedrag 
1

如果問題是關於如何在Access查詢中顯示Null爲0,請考慮這個簡單的查詢。它在SumOfbedrag列中返回一些空值的行。

SELECT y.categorieId, Sum(y.bedrag) AS SumOfbedrag 
FROM YourTable AS y 
GROUP BY y.categorieId 

使用SQL爲子查詢,含查詢可以轉化空至0與IIf()表達。

SELECT 
    sub.categorieId, 
    IIf(sub.SumOfbedrag Is Null, 0, sub.SumOfbedrag) AS totaal 
FROM 
    (
     SELECT y.categorieId, Sum(y.bedrag) AS SumOfbedrag 
     FROM YourTable AS y 
     GROUP BY y.categorieId 
    ) AS sub; 

然而,在你的截圖再次尋找讓我覺得這個問題實際上是你的查詢不包括在totaal柱空行。在這種情況下,請在與GROUP BY合併之前檢查基礎數據。看到這個查詢是否返回任何行...

SELECT f.bedrag, c.omschrijving, Limiet.maximumBedrag 
FROM 
    (Financien f 
    INNER JOIN Categorie c 
    ON f.categorieId = c.id) 
    INNER JOIN Limiet 
    ON f.limietId = Limiet.id 
WHERE 
     f.inkomstOfUitgave = 1 
    AND f.bedrag Is Null 

如果查詢返回任何行,我最好的猜測是,你的一個或兩個連接應INNER改爲LEFT JOINRIGHT JOIN

+1

是啊,我在想「左/右JOIN」了。 –

+0

首先,子查詢不起作用,因爲「IS」不被程序支持:( 其次,如果我運行最後一個查詢,我確實得不到任何結果!所以我相信我需要一個左或右連接然後? 在這張圖片你可以看到我使用的三個表的數據庫結構,你能告訴我如何編碼連接嗎?我不斷收到錯誤:/是的事實上,所有的東西給0作爲總和應顯示:)我需要其他數據的其他東西! Access中的表格結構:http://i.imgur.com/MWs4hm8。png – Yenthe

+0

*「首先,子查詢不起作用,因爲」IS「不被程序支持」*我創建了一個表,然後在Access 2007中創建並測試了該查詢,然後將SQL文本和將其粘貼到答案中。它是有效的訪問SQL – HansUp