簡體   English   中英

SQL Server 2005匯總查詢

[英]SQL Server 2005 summation query

我正在嘗試在SQL Server 2005上創建一個查詢,該查詢將檢查某些詳細記錄中某些字段的總和是否等於標頭記錄中的總字段。 這將用於為我工作的公司創建電子支票存款。

層次結構如下所示:存款->批次->支票

在創建用於電子存款的文件之前,可能沒有為每個表完全完成復制,因此在創建文件之前,我需要檢查以確保每個記錄都在其中。 基本上,我想從我的“存款”表中選擇一個位置和ID的列表,其中在各自的表中確實存在正確的批次數量和正確的支票數量。

這是我想要的邏輯。

select location, d.id from closing_balance..cb_deposits as d
left outer join closing_balance..cb_checkbatchhf as b on d.id = b.deposit_id and d.location = b.loc
left outer join closing_balance..cb_checkdf as c on b.id = c.batch_id and b.loc = c.loc
where sum(c.check_amt) = b.scanned_subtotal and sum(b.scanned_subtotal) = d.amount and sum(b.num_checks_scanned) = d.count

上面的方法不起作用,因為您無法在where子句中使用聚合函數sum。 我可以很容易地以編程方式執行此操作,但是如果有聰明的方法可以在SQL語句中快速執行此操作,那將是最佳選擇。

任何幫助是極大的贊賞。

謝謝!

您可以將總和檢查移到where子句之后的hading子句中:

select location, d.id 
from closing_balance..cb_deposits as d
left outer join closing_balance..cb_checkbatchhf as b 
  on d.id = b.deposit_id and d.location = b.loc
left outer join closing_balance..cb_checkdf as c 
  on b.id = c.batch_id and b.loc = c.loc
group by location, d.id, b.scanned_subtotal, d.amount, d.count
having sum(c.check_amt) = b.scanned_subtotal 
   and sum(b.scanned_subtotal) = d.amount 
   and sum(b.num_checks_scanned) = d.count

您不能在WHERE子句中求和,但是可以使用HAVING子句。 例如

SELECT
    Id
FROM
    Table
GROUP BY
    Id
HAVING
    SUM(Amount) = 100

每個表的復制可能尚未完全完成 當然,這是需要解決的問題,而不是解決記錄計數檢查的問題。

您如何復制數據?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM