我有這個疑問:SQL SUM問題
Select Denumire,Sum(Livrari.Cantitate)as Stoc,
isnull(Sum(Facturi_Emise.Cantitate),0) as 'Sold',
isnull(Sum(Livrari.Cantitate),0)-isnull(sum(Facturi_Emise.Cantitate),0) As 'Stoc After Sales',
Livrari.Id_Depozit
From Livrari
Left join Produse On Livrari.Id_Produs=Produse.Id_Produs
Left join Facturi_Emise On Produse.Id_Produs=Facturi_Emise.Id_Produs
group by Denumire, Livrari.Id_Depozit
order by Denumire
我需要的股票,所需出售的物品的數量,和我在2個存款拿到後物品的價格。但在「Livrari」表中,我在兩種存款中都得到了相同的物品,存款1的金額爲300,存款2的金額爲300,當我通過Id_Depozit進行金額和分組時,我得到的金額爲600存款1和600存款2,對於表Facutri_Emise也是如此,因爲我應該從存款1中只取250件物品,存款2只取300件,兩次存款都需要550(250 + 300),並且我在每次銷售50後獲得了Stoc器,代替50存款1和0存款2.
我的問題是結果在8行和第9(這意味着Pahare)在柱STOC應爲300對於每個。在下一列Sold中,第8行應該是250,第9行是300.最後,在Sale之後的Stoc列應該是差異,因爲第8行= 50行第9行= 0。 我的意思是每次產品重複時,我的查詢都會將這筆款項存入存款1和存款2中,因爲我爲每筆存款提供不同的值,因此應向我顯示相應的值。如果物品(比如說蘋果)存入存款1,另一供應商將存入另一個蘋果,那麼供應商將帶來一定數量的存款2.當客戶爲該客戶制定賬單(「Facturi_Emise」)時,我應該將一定數量的蘋果從存款1和另一個存款2,我想看看在一個存款中剩餘的金額是多少,剩下的存在於另一個存款中。
剛剛與模式設計在此處鍵入一些示例數據。 –
輸出 - 「Facturi_Emise」(Id_Factura(PK),CNP(FK),Id_Produs(FK),Cantitate(Quantity),Id_Depozit) 1/1750130120056/5/21/1 2/1870823130025/3/32/1 3/************/7/250/1 4/************/2/55/2 5/****** ******/12/5/1 6/************/5/10/1 7/************/11/1 8/************/7/2 9/************/6/2 輸入 - 「Livrari」(Id_Livrare(PK ),Id_Furnizor(FK),Id_Produs(FK),Cantitate(數量),Id_Depozit(FK) –
你還缺開始的數據表的價值。我們能得到想要的結果的一個實際的表呢,我們傾向於選擇樣本數據爲文本格式以便於複製@Tanner - 只要至少有一個非空值,SUM(。 ..)''實際上[忽略'null'值](http://sqlfiddle.com/#!3/d41d8/36386/0),所以這不是必需的。 –