这句SQL怎么写(100分)

  • 主题发起人 主题发起人 doud
  • 开始时间 开始时间
D

doud

Unregistered / Unconfirmed
GUEST, unregistred user!
select 单位编号,sum(销售额),count(*) from
(select 单位编号,单据编号,SUM(含税价*VAL(数量)) AS 销售额
from a group by 单位编号,单据编号)group by 单位编号

A表中包括信息单位编号,单据编号,商品编号
想实现功能统计对各客户的销售额,及销售批次,一个单据号为一次
 
select 单位编号,单据编号,SUM(含税价*VAL(数量)) AS 销售额 ,count(单据编号) group by 单位编号,单据编号
 
要求汇总某单位的信息按单位编号分组。
 
那就把“单据编号”去掉嘛:

select 单位编号,SUM(含税价*VAL(数量)) AS 销售额 ,count(单据编号) group by 单位编号

 
我觉得你的SQL语句和温柔一刀的SQL语句(最后的)都对,
究竟你认为怎么不对?
请详细解释一下你的用意和最后的结果有什么差别?
最好能举一个例子。
 
题意不是很清楚,能否详细点?
 

A表为DBF数据表;
我的题意是单位编号对应多个单据编号,单据编号又对应多个商品编号。
目前遇到的问题以单位编号分组后,count()得到的是商品编号的个数,
不是单据编号的个数;

不知这次是否说清!谢谢
 
照你理解,得到的应该是单据编号的个数,count()得到的不是商品编号的个数,
你理解错了,你的SQL应该是正确的!
 
不好意思,你如果这样写可能就对了!

select 单位编号,sum(销售额),count(单据编号) from
(select 单位编号,单据编号,SUM(含税价*VAL(数量)) AS 销售额
from a group by 单位编号,单据编号)group by 单位编号。

用count(单据编号) ,不要用COUNT(*)!
试一试!
 

单位编号 单据编号 商品编号
001 XS000001 1-001-01
001 XS000001 1-002-01
001 XS000002 1-001-01

selectT 单位编号,count(单据编号),count(*) from A group by 单位编号

count(单据编号) = 3 //应为2
count(*) = 3

另DBF不支持我写的SQL。
 
用SELECT 单据编号,单位编号,COUNT(*)
FROM A GROUP BY 单据编号,单位编号
 
不好意思,考虑不成熟,我想了一下,其实你可以建一张中间表,将第一次的
查询INSERT 到中间表,然后再对“单位编号”进行分组统计,具体如下:
1、CREATE TALBE B
(A_NO CHAR(10),
B_NO CHAR(10),
PRIMARY KEY (A_N0,B_NO))
2、INSERT INTO B SELECT 单位编号,单据编号
FROM A GROUP BY 单位编号,单据编号

3、SELECT A_NO ,COUNT(*) FROM B group by A_NO

应该可以了,你试一下!


 
原来那条语句确实有问题,要出来根据单据编号的统计,要用"distinct 单据编号"

select 单位编号,SUM(含税价*VAL(数量)) AS 销售额 ,count(distinct 单据编号) group by 单位编号
 
温柔一刀的方法好象是对的!
 
DBF对SQL支持的不好,最好用中间表。
 
>>要用"distinct 单据编号"

我怎么没想到!

 
后退
顶部