标题:尝试写了一个sql语句 结果杯具了
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 10楼 taifu945
那就是说 只能拆成2条sql语句 来实现预期目标了

DO IT YOURSELF !
2013-06-06 22:48
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
先不去搞你这句命令的含义了,单就语法本身,应该是:

SELECT SUM(dj*shl2) FROM (SELECT dj, SUM(shuliang) AS shl2 FROM wp GROUP BY spbh,spmc HAVING shl2>0) T1

1、在FROM子句中,必须要为子查询起个临时的表名;
2、Shl2这个变量代表了表达式“SUM(shuliang)”,所以不能放在WHERE子句中,只能放在HAVING子句中。WHERE子句中不允许使用聚集函数。


以上2点仅是你写出来的代码有问题的地方。另外,由于版本不同,你的GROUP BY子句可能会被VFP6.0接受,但在9.0中也不能通过,必须要加上dj。因为VFP9.0的SQL命令移植了大型数据库系统的SQL命令,这种命令规定了:输出项中若包含聚集函数,则其它不含聚集函数的输出项全部要作为分组字段。
2013-06-06 22:55
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
以下是引用wp231957在2013-6-6 22:48:03的发言:

那就是说 只能拆成2条sql语句 来实现预期目标了
不一定的,可以通过子查询解决嵌套聚集函数的问题。这在我写的《FoxPro入门手册》中有专门案例介绍(第137页的例4)。下载地址:https://down.bccn.net/5407.html

另外,说个题外话:建议你安装9.0版本的VFP,真的。
2013-06-06 23:00
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用taifu945在2013-6-6 23:00:05的发言:

不一定的,可以通过子查询解决嵌套聚集函数的问题。这在我写的《FoxPro入门手册》中有专门案例介绍(第137页的例4)。下载地址:https://down.bccn.net/5407.html

另外,说个题外话:建议你安装9.0版本的VFP,真的。
   多谢  已经下载  

DO IT YOURSELF !
2013-06-07 08:17
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用taifu945在2013-6-6 22:55:33的发言:

先不去搞你这句命令的含义了,单就语法本身,应该是:

SELECT SUM(dj*shl2) FROM (SELECT dj, SUM(shuliang) AS shl2 FROM wp GROUP BY spbh,spmc HAVING shl2>0) T1

1、在FROM子句中,必须要为子查询起个临时的表名;
2、Shl2这个变量代表了表达式“SUM(shuliang)”,所以不能放在WHERE子句中,只能放在HAVING子句中。WHERE子句中不允许使用聚集函数。

以上2点仅是你写出来的代码有问题的地方。另外,由于版本不同,你的GROUP BY子句可能会被VFP6.0接受,但在9.0中也不能通过,必须要加上dj。因为VFP9.0的SQL命令移植了大型数据库系统的SQL命令,这种命令规定了:输出项中若包含聚集函数,则其它不含聚集函数的输出项全部要作为分组字段。
SELECT SUM(dj*shl2) FROM (SELECT spbh,dj, SUM(shuliang) AS shl2 FROM liushuiw GROUP BY spmc HAVING shl2>0 into table T1)
SELECT SUM(dj*shl2) FROM (SELECT spbh,dj, SUM(shuliang) AS shl2 FROM liushuiw GROUP BY spmc HAVING shl2>0) into table T1
SELECT SUM(dj*shl2) FROM (SELECT spbh,dj, SUM(shuliang) AS shl2 FROM liushuiw GROUP BY spmc HAVING shl2>0) T1

以上诸条语句在vf6下均提示语法错误
比较闹心的是  如何才能让它提示哪里出错了呢  就笼统的一句语法错误

DO IT YOURSELF !
2013-06-07 08:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
传个表上来

坚守VFP最后的阵地
2013-06-07 08:53
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
wp.rar (44.02 KB)


第一步、统计每一种商品的库存数量
第二步、计算商品库存数量>0的合计金额(dj*shuliang)

现在用2条sql语句来实现是没有问题的  
主要是想看一看 用一条sql语句能否实现

DO IT YOURSELF !
2013-06-07 10:18
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
商品名称与商品编号是否一一对应
同一商品怎么会有若干个编号

[ 本帖最后由 sdta 于 2013-6-7 10:50 编辑 ]

坚守VFP最后的阵地
2013-06-07 10:46
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
是的

DO IT YOURSELF !
2013-06-07 10:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 

坚守VFP最后的阵地
2013-06-07 10:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-414695-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020391 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved