SQL高手帮帮忙呀,这净利润到底是怎么算出来的!如果出现这样的情况,那怎么算?

winsock2000 2002-11-05 04:48:07
数据库是ACCESS!
库存表:
名称 类型 数量 价格 日期
CPU intel 2 640 2002-10-22
CPU intel 2 680 2002-10-25
显示器 三星 3 870 2002-10-25

销售表:
单句 名称 类型 数量 价格 日期
XS001 CPU intel 3 720 2002-10-30
XS001 显示器 三星 3 900 2002-10-25
这样的算利润要如何算呢?正确应该是290元才对!可为什么我用下列的语句
with adoquery1 do
begin
close;
sql.Clear;
sql.add('select 销售表.单据,sum((销售表.价格-库存表.价格)*销售表.数量) as 利润,min(库存表.价格) as 价格 from 销售表,库存表
where 销售表.名称=库存表.名称 and 销售表.型号=库存表.型号 and 销售表.单据='''+dbedit1.text+''' group by 销售表.单据');
open;
lrun_string:=adoquery1.FieldValues['lirun'];
按我这样的SQL语句,得到的却是370,和事实有很大的出入呀,这是为什么呢?
我知道语句多算了一部分的CPU,可不知道如何更改好!
谢谢!大家好,就当帮帮我吧!:(
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
afei78223 2002-11-06
  • 打赏
  • 举报
回复
要显示按照产品类型汇总的销售明细表,
看看是不是可以根据库存表和销售表创建一个视图来实现
winsock2000 2002-11-06
  • 打赏
  • 举报
回复
谢谢了,可问题就在用户在制定销售明细表的时候,一般都是把同一类型产品汇总。来进行销售的。这样还是得依照我原来的表。如果按照你的思路。就变成了有重复记录的销售明细表!
afei78223 2002-11-05
  • 打赏
  • 举报
回复
问题在于你的库存表中
名称 类型 数量 价格 日期
CPU intel 2 640 2002-10-22
CPU intel 2 680 2002-10-25
同一型号的CPU价格不一样?,我的思路如下:
如果是不同时间进的CPU的价格不一样,那应该在库存
表中加上一个编号字段,以表示同一型号的产品的价格有可能不同,
库存表:
编号 名称 类型 数量 价格 日期
P001 CPU intel 2 640 2002-10-22
P002 CPU intel 2 680 2002-10-25
P003 显示器 三星 3 870 2002-10-25
然后销售表也加上一个货物编号字段,去掉名称和类型字段
单句 货物编号 数量 价格 日期
XS001 P001 2 720 2002-10-30
XS001 P002 1 720 2002-10-30
XS001 P003 3 900 2002-10-25
SQL语句变一下:
'select 销售表.单据,sum((销售表.价格-库存表.价格)*销售表.数量) as 利润, Min(库存表.价格) as 价格 from 销售表,库存表
where 销售表.货物编号=库存表.编号 and 销售表.单据='''+dbedit1.text+''' group by 销售表.单据'


2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧