2015-07-11 33 views
0
SELECT dbo.items.NAME, 
     CONVERT(VARCHAR(20), dbo.warehouse.date, 101)AS Date, 
     Sum (dbo.warehouse.debit)     AS Quantity 
FROM dbo.warehouse 
     INNER JOIN dbo.items 
       ON dbo.warehouse.businessunitid = dbo.items.businessunitid 
        AND dbo.warehouse.itemid = dbo.items.itemid 
GROUP BY dbo.items.NAME, 
      CONVERT(VARCHAR(20), dbo.warehouse.date, 101) 

SQL加入查詢來獲取項目名稱,日期和借方餘額的總和,其中借方差額不等於0SQL加入查詢以獲取項目名稱,日期和借方餘額不等於0的借方餘額總和?

回答

3

看起來您正在使用SQL Server。

SELECT i.NAME, 
     CONVERT(VARCHAR(20), w.date, 101) AS Date, 
     Sum(w.debit) AS Quantity 
FROM dbo.warehouse w INNER JOIN 
    dbo.items i 
    ON w.businessunitid = i.businessunitid AND 
     w.itemid = i.itemid 
GROUP BY i.NAME, CONVERT(VARCHAR(20), w.date, 101) 
HAVING Sum(w.debit) > 0; 

這假定w.debit從不爲負。 (在財務應用,美元數額往往總是積極的。)當然,如果它可以是負數,你可能想:

HAVING Sum(w.debit) <> 0; 

或:

HAVING Sum(w.debit) < 0; 

視情況而定。

在許多其他的數據庫,你可以使用別名HAVING子句中:

HAVING Quantity > 0 

但SQL Server不支持這一點。

另請注意使用表別名。這使得寫和讀查詢變得更容易。

+1

要小心,要匹配的問題應該是'HAVING Sum(w.debit)<> 0;' – danihp

+0

@danihp。 。 。這是一個好點。 –

1

您正在尋找having子句。這追加到您的查詢:

HAVING Sum (dbo.warehouse.debit) <> 0 

報價HAVING (Transact-SQL) docs - 您的SQL看起來像T-SQL -

HAVING(的Transact-SQL)

指定的搜索條件對於一個組或一個聚合。 HAVING只能用於SELECT語句。 HAVING通常用在GROUP BY子句中。當不使用GROUP BY時,HAVING的行爲如同WHERE子句。