[英]SQL Sum with query and Group by
我有2張桌子:
像這樣,並希望通過 ProductCode = Discount-1000 上的條件來計算 tblsoinvoiceheader 上的賬單和子查詢的總和
我應該有什么樣的查詢?
要在tblsoinvoiceheader
准備數據,我們需要使用這樣的查詢:
select TransactionDate,
count(*) CountOfBill,
sum(InvoiceAmountWithTax) InvoiceAmountWithTax
from tblsoinvoiceheader
group by TransactionDate
然后將其與以下查詢的結果連接:
select (-1)*LineAmountWithTax
from tblsoinvoiceitem
where ProductCode = 'Discount-1000'
加起來:
select * from (
select (-1)*LineAmountWithTax
from tblsoinvoiceitem
where ProductCode = 'Discount-1000'
-- i used cross join because you didn't specify joining condition and it looks like you want to
-- join all recrods
) a cross join (
select TransactionDate,
count(*) CountOfBill,
sum(InvoiceAmountWithTax) InvoiceAmountWithTax
from tblsoinvoiceheader
group by TransactionDate
) b
如果每張發票最多有一個DISCOUNT
行,則可以使用:
SELECT h.TransactionDate,
COUNT(*) AS CountOfBill,
SUM(h.InvoiceAmountWithTax) AS InvoiceAmountWithTax,
SUM(CASE WHEN i.Remark = 'Discount' THEN -i.LineAmountWithTax END) AS Discount
FROM tblsoinvoiceheader h LEFT JOIN
tblsoinvoiceitem i
ON i.DocNo = h.DocNo AND
i.Remark = 'Discount'
GROUP BY h.TransactionDate;
如果每個文檔可以有多個折扣,則需要預先匯總。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.