我有这个疑问: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),所以这不是必需的。 –