| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1727 人关注过本帖
标题:尝试写了一个sql语句 结果杯具了
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
传个表上来

坚守VFP最后的阵地
2013-06-07 08:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
商品名称与商品编号是否一一对应
同一商品怎么会有若干个编号

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

坚守VFP最后的阵地
2013-06-07 10:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
是的

DO IT YOURSELF !
2013-06-07 10:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-06-07 10:52
快速回复:尝试写了一个sql语句 结果杯具了
数据加载中...
 
   



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

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