ACCESS数据库中这样的sql如何写啊?高手请进。

aiunong 2004-03-18 04:02:57
有一个销售表,其中存在正常销售和退货数据(还分是网上销售和店面销售)。
表字段:wkmod=0: 表示正常销售。毛利为负。
wkmod=1:表示退货。毛利为正。
IsNetSell=0:表示店面销售
IsNetSell=1:表示网上销售
要求得到如下查询结果:分别汇总销售表中店面销售与网上销售的结果。但每一种销售都要计算毛利,其中 毛利=(售价-进价)*销售数量。
且如果是退货则毛利为负,正常销售毛利为正。
求对于ACCESS数据库的sql语句。
大家帮帮忙啊,小妹在此先谢过了。
...全文
78 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiunong 2004-03-23
  • 打赏
  • 举报
回复
问题已解决,谢谢大家的支持。结帖.
yczyk 2004-03-19
  • 打赏
  • 举报
回复
大家集思广议吧,偶抛出个引子来,大家继续讨论!
伴水兄,用不着这么“损”兄弟吧?呵呵。。。
aiunong 2004-03-19
  • 打赏
  • 举报
回复
UP
aiunong 2004-03-19
  • 打赏
  • 举报
回复
不知道大家明白我的要求吗?再说一遍好了:
销售表中销售方式有:店面销售、网上销售;(销售方式字段:IsNetSale=0:店售;1:网售)
销售状态有:正常销售、退货销售;(销售状态字段:wkmod=0:正常销售;1:退货销售)
毛利的计算:wkmod=0毛利为正;wkmod=1毛利为负
其中状态为退货的商品,其对应的数量、金额、毛利全部为负;
正常销售的商品,其对应的数量、金额、毛利全部为正。
即:,(数量=正常销售量-退货量),金额=正-退、毛利=正-退.
现要从销售表中查询各种商品的:店面销售、网上销售、合计销售 的汇总情况。
得到的结果如下模式:
商品名称 店销售 网销售 合计销售
(数量 店价 毛利) (数量 网价 毛利) (数量 进价金额 售价金额 毛利)

不知大家明白了吗?还望大家顶力帮忙啊。多谢各位了。
  • 打赏
  • 举报
回复
同意把“解决问题”的机会留给yczyk
aiunong 2004-03-19
  • 打赏
  • 举报
回复
select distinct B.GOODSID,B.BARCODE,A.DepotID,A.OrderID,A.SELLDATE,A.SELLID,B.GOODSNAME,
B.CLASSID,C.SELLPRICE,C.PROVIDERID,C.SELLLIMIT,C.PURCHASEPRICE,(C.PURCHASEPRICE*SUM(iif(A.WKMOD=0,B.DQTY,-B.DQTY))) AS PAMT,SUM(iif(A.WKMOD=0,B.DQTY,-B.DQTY)) as DQTY,SUM(iif(A.WKMOD=0,B.DAMT,-B.DAMT)) AS DAMT
from SA_SALE_BK A,SA_SALE_CT_BK B,HQ_GOODS C Where A.SELLID=B.SELLID AND (A.WKMOD=0 OR A.WKMOD=1) AND B.GOODSID=C.GOODSID AND (B.BARCODE=C.BARCODE OR B.BARCODE=C.BARCODE1 OR B.BARCODE=C.BARCODE2)
group by B.GOODSID,B.BARCODE,A.DepotID,A.OrderID,A.SELLDATE,A.SELLID,B.GOODSNAME,
B.CLASSID,C.SELLPRICE,C.PROVIDERID,C.SELLLIMIT,C.PURCHASEPRICE
为什么查出来的结果有重复的GOODSID存在啊。是我分组造成的吗,可我用了DISTINCT了啊。
大家帮忙看看。
aiunong 2004-03-19
  • 打赏
  • 举报
回复
up
guxizhw 2004-03-19
  • 打赏
  • 举报
回复
关注这个贴子……
aiunong 2004-03-19
  • 打赏
  • 举报
回复
这里不是灌水乐园啊,你们怎么都。。。。。。
hthunter 2004-03-19
  • 打赏
  • 举报
回复
我眼红,
yczyk你多努力:D
hthunter 2004-03-19
  • 打赏
  • 举报
回复
gg、mm的叫的好亲热啊:)
zswangII 2004-03-18
  • 打赏
  • 举报
回复
楼上、楼下的兄弟们还是把“解决问题”的机会留给yczyk吧~~
aiunong 2004-03-18
  • 打赏
  • 举报
回复
楼上的是不是要用UNION连接起来啊。那样效率是不是很慢啊。
maimaizhi 2004-03-18
  • 打赏
  • 举报
回复
店面销售
select sum(数量) as 数量,avg(售价)售价,sum(-1*(wkmod*2-1)*(售价-进价)*销售数量) from 销售表 where IsNetSell=0

网上销售
select sum(数量) as 数量,avg(售价)售价,sum(-1*(wkmod*2-1)*(售价-进价)*销售数量) from 销售表 where IsNetSell=1

合计销售
select sum(数量) as 数量,avg(售价)售价,sum(-1*(wkmod*2-1)*(售价-进价)*销售数量) from 销售表
aiunong 2004-03-18
  • 打赏
  • 举报
回复
想得到如下显示结果。
同时得到店面销售和网上销售及两个汇总的数据。
店面销售 网上销售 合计销售
数量 售价 毛利 数量 售价 毛利 数量 进价 售价 毛利
。。 。。 。。 。。 。。 。。 。。 。。 。。 。。
如果这条数据是店面销售,则上销售的三列为0,反之店面销售的为0.合计销售求两者之和。
maimaizhi 2004-03-18
  • 打赏
  • 举报
回复
select 货品编号,IsNetSell,sum((wkmod*2-1)*(售价-进价)*销售数量) AS 毛利 from 销售表 group by 货品编号,IsNetSell
yczyk 2004-03-18
  • 打赏
  • 举报
回复
iif是Access的函数,你把它写到语句里面去!
唉,上MSN说吧,我的MSN:yc_zyk@hotmail.com
aiunong 2004-03-18
  • 打赏
  • 举报
回复
哦, 先谢楼上的GG了,但是IIF在delphi中能使用吗?
我忘了说了我用:delphi5.0 +ACCESS库。
yczyk 2004-03-18
  • 打赏
  • 举报
回复
对不了,语句有点错,刚看到:
select sum(iif(wkmod=0,(售价-进价)*销售数量,0-(售价-进价)*销售数量)) AS ML from 销售表 group by 货品标识符,IsNetSell
少了一对括号!

yczyk 2004-03-18
  • 打赏
  • 举报
回复
呵呵,叫偶GG好了,偶是青蛙!:)...
对了,写反了就应该如下写:
select sum(iif wkmod=0,(售价-进价)*销售数量,0-(售价-进价)*销售数量) AS ML from 销售表 group by 货品标识符,IsNetSell
这个相信聪明的凡MM应该会吧?
加载更多回复(3)

2,497

社区成员

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

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