是否有可能根據不同的where子句計算多個總量?例如:是否可以聚合不同的where子句?
比方說,我有兩個表,一個用於發票,一個用於InvoiceLineItems。發票表中有一個發票總計字段,並且InvoiceLineItems表中的每個發票行項目記錄都包含一個字段,該字段表示該行項目是否可以折扣。我需要三個總和,其中一個折扣= 0,一個折扣= 1,折扣無關。這樣,我的輸出將是:
InvoiceNumber Total DiscountableTotal NonDiscountableTotal
------------- ----- ----------------- --------------------
1 53.27 27.27 16.00
2 38.94 4.76 34.18
3...
我到目前爲止發現的唯一方法是使用類似:
Select i.InvoiceNumber,
i.Total,
t0.Total As DiscountableTotal,
t1.Total As NonDiscountableTotal
From Invoices i
Left Join (
Select InvoiceNumber,
Sum(Amount),
From InvoiceLineItems
Where Discountable = 0
Group By InvoiceNumber
) As t0 On i.InvoiceNumber = t0.InvoiceNumber
Left Join (
Select InvoiceNumber,
Sum(Amount)
From InvoiceLineItems
Where Discountable = 1
Group By InvoiceNumber
) As t1 On i.InvoiceNumber = t1.InvoiceNumber
這似乎有些繁瑣,這將是很好,如果我能做些什麼像:
Select InvoiceNumber,
Sum(Amount) Where Discountable = 1 As Discountable
Sum(Amount) Where Discountable = 0 As NonDiscountable
Group By InvoiceNumber
我知道SQL是完全無效的,但它在邏輯上描繪什麼,我試圖做...
TIA
P.S.我需要這個在SQL Server 2000實例上運行,但是如果/我如何在SQL Server 2005/2008上實現這一點,我也感興趣(以備將來參考)。
我不知道爲什麼我從來沒有想到這一點...似乎很明顯,現在它在我面前。謝謝。 – BenAlabaster 2010-12-22 18:54:19
+1代表第一個代碼段。不直觀,但它工作得很好。 – 2010-12-22 20:47:07