如果库存数量不求和,这样写.我上面没有加group by ,把这个加上. select a.商品编号, a.商品名称, a.库存数量, a.单价, sum(b.销售数量) 销售数量, sum(a.单价*b.销售数量) 销售金额 from a,b where a.商品编号=b.商品编号 and b.销售日期> =date1 and b.销售日期 <date2+1; group by a.商品编号, a.商品名称, a.库存数量, a.单价
SELECT a.商品名称,a.库存数量,b.销售单编号,b.商品编号,SUM(b.销售数量),SUM(a.单价*b.销售数量) AS 销售总额 from a JOIN b ON a.商品编号=b.商品编号 where 销售日期 between 日期1 and 日期2 GROUP BY a.商品编号,a.商品名称,a.库存数量,b.销售单编号,b.商品编号,b.销售日期
具体的SQL如下:
select
a.商品编号,
a.商品名称,
sum(a.库存数量) 库存数量,
a.单价,
sum(b.销售数量) 销售数量,
sum(a.单价*b.销售数量) 销售金额
from a,b
where a.商品编号=b.商品编号
and b.销售日期>=date1 and b.销售日期<date2+1;但我觉得你的设计有些问题,首先:当商品卖完后,你的数据还保留在库存表中吗?
第二.商品的销售价格一直都不变吗,我感觉销售价格应该放在销售表中
第三.在库存表中应该保存的是库存的成本(你是按什么原则进行库存的管理呢,一般的有先进先出,加权等)
第四.我感觉你应该建立一个商品字典表,库存及销售表和这个字典表进行关联
最后,对于进销存,应该通过一个报表计算,比如,期初库存,销售,出库等信息
以上供你参考,只是我的建议
不过你的答案好像有点问题,库存数量干吗求和???直接从a表读取就可以了,在dbgrid里面显示的商品编号、商品名称、库存数量、单价应该跟a表的相关记录的信息一样,而销售总量应该是所查询的时间段里面所销售的同一商品的销售数量的sum,销售总额是对应这一商品的单价*销售,而不是所有商品的销售总额,只是某一商品的销售总额,可能我没有详细描述,所以你们搞错了!谢谢了,加油!给我正确详细的答案。
select
a.商品编号,
a.商品名称,
a.库存数量,
a.单价,
sum(b.销售数量) 销售数量,
sum(a.单价*b.销售数量) 销售金额
from a,b
where a.商品编号=b.商品编号
and b.销售日期> =date1 and b.销售日期 <date2+1;
group by a.商品编号, a.商品名称, a.库存数量, a.单价
from a JOIN b ON a.商品编号=b.商品编号 where 销售日期 between 日期1 and 日期2
GROUP BY a.商品编号,a.商品名称,a.库存数量,b.销售单编号,b.商品编号,b.销售日期
你的这个价格如果是变的,以后统计时,只能是最新的价格的统计,根本就不是历史的销售信息了.
你找一本数据库的书,看一下查询语句的写法,很有帮助的,你的这个,其实就是一个sql查询的问题.
你的这个价格如果是变的,以后统计时,只能是最新的价格的统计,根本就不是历史的销售信息了.
你找一本数据库的书,看一下查询语句的写法,很有帮助的,你的这个,其实就是一个sql查询的问题.