2016-06-13 34 views
0

在我的數據庫中,我有兩個表:tblReceiptstblDisclosure。一些商業細節:HAVING子句中的組查詢不起作用

  1. 有時我收到錢但沒有披露應用它。
  2. 有時我會在收到付款之前處理披露。

以下查詢旨在返回1和2的所有實例,但它不包含。我沒有記錄,但我知道有一個這樣的例子存在。當我運行查詢時,我收到一個請求,輸入參數Test中的數據。如果我刪除HAVING子句,則查詢正確返回所有記錄。如何根據需要應用過濾器?

SELECT 
    Sum([DBSFee] + [MyFee]) AS Fee, 
    [Amount] + [Adjustment] AS Rec, 
    tblReceipts.ID, 
    [Fee] - [Rec] AS Test, 
    tblClient.ClientName, 
    tblClient.ClientID, 
    tblReceipts.Notes 
FROM 
    (tblDisclosure 
    INNER JOIN tblReceipts ON tblDisclosure.ReceiptsLookup = tblReceipts.ID) 
    INNER JOIN tblClient ON tblReceipts.ClientLookup = tblClient.ClientID 
GROUP BY 
    [Amount] + [Adjustment], 
    tblReceipts.ID, 
    tblClient.ClientName, 
    tblClient.ClientID, 
    tblReceipts.Notes 
HAVING Test <> 0; 
+0

內連接是可交換 - 爲什麼把括號在那裏? – Hogan

回答

1

嘗試

Select Fee, Rec, ID, Test, ClientName, ClientID, Notes FROM (
SELECT Sum([DBSFee]+[MyFee]) AS Fee, [Amount]+[Adjustment] AS Rec, tblReceipts.ID, [Fee]-[Rec] AS Test, tblClient.ClientName, tblClient.ClientID, tblReceipts.Notes 
FROM (tblDisclosure INNER JOIN tblReceipts ON tblDisclosure.ReceiptsLookup = tblReceipts.ID) INNER JOIN tblClient ON tblReceipts.ClientLookup = tblClient.ClientID 
GROUP BY [Amount]+[Adjustment], tblReceipts.ID, tblClient.ClientName, tblClient.ClientID, tblReceipts.Notes) as T 
WHERE Test<>0; 
+0

使用你的建議我得到這個:「你的查詢不包括指定的表達式'Not Sum([DBSFee] + [MyFee] -Amount-Adjustment = 0'作爲聚合函數的一部分」 –

+0

那個單詞「not 「來自?你在那裏輸入」Not「? – GendoIkari

+0

嗯,那有(Fee-Rec)<> 0 – vercelli