| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4110 人关注过本帖
标题:vfp6下:GROUP BY子句:能用输出列中的字段名或字段别名,但不能用表达式。 ...
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1528
专家分:180
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:17 
vfp6下:GROUP BY子句:能用输出列中的字段名或字段别名,但不能用表达式。为什么?
例:

1、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by bmd   &&&能通过
2、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by 1     &&也能通过
3、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by subs(xh,1,4) &&不能通过为什么?
搜索更多相关主题的帖子: 表达式 count 
2013-08-15 11:31
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:5 
3、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by bmd
改成这样试试

在没有路的地方走一条路,让别人有路可走
2013-08-15 11:46
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1528
专家分:180
注 册:2006-6-3
收藏
得分:0 
select subs(xh,1,4) as bmd,count(xh) as rs from ls group by bmd
改成这样试试
这当然能通过,我已有例子。
2013-08-15 11:58
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
这个不难理解,group by是对形成的查询表进行分组,在新的查询中就没有xh这个字段,当然不行,如果改成
3、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by subs(bmd,1,4) 应该可以

在没有路的地方走一条路,让别人有路可走
2013-08-15 12:04
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1528
专家分:180
注 册:2006-6-3
收藏
得分:0 
select subs(xh,1,4) as bmd,count(xh) as rs from ls group by subs(bmd,1,4) 应该可以
通不过,提示找不到列'        '
2013-08-15 12:15
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
以下是引用sylknb在2013-8-15 11:31:55的发言:

例:

1、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by bmd   &&&能通过
2、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by 1     &&也能通过
3、select subs(xh,1,4) as bmd,count(xh) as rs from ls group by subs(xh,1,4) &&不能通过为什么?
那就用1、2
2013-08-15 12:19
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
收藏
得分:5 
回复 楼主 sylknb
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...]
   FROM [FORCE] Table_List_Item [, ...]
      [[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias]
      [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...]
   [WITH (BUFFERING = lExpr)]
   [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...]
   [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]]
   [UNION [ALL] SELECTCommand]
   [ORDER BY Order_Item [ASC | DESC] [, ...]]
   [INTO StorageDestination | TO DisplayDestination]
   [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]

人家说得很明白,是Column_list_item,不是Expression。分组字段可以这样存在:
sele AA+BB,max(CC) from alias() group by AA,它要么是查询结果中的一个字段,要么就是隐含在查询结果中。
2013-08-15 12:36
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:5 
顶楼的第3条代码犯了语法错误,7楼已经解释得比较明了。
2013-08-15 13:26
scilent
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:285
专家分:1399
注 册:2011-8-9
收藏
得分:0 
以前我曾经遇到过这个问题,没有弄懂,今天刚开始没有仔细看。现在总算弄明白了

在没有路的地方走一条路,让别人有路可走
2013-08-15 13:34
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1528
专家分:180
注 册:2006-6-3
收藏
得分:0 
分组字段可以这样存在:
sele AA+BB,max(CC) from alias() group by AA,它要么是查询结果中的一个字段,要么就是隐含在查询结果中。
'隐含在查询结果中'是何种样子?请明示。
AA+BB应是二个字段组合后的结果,哪其中AA是隐含在查询结果中还是查询结果中的一个字段


[ 本帖最后由 sylknb 于 2013-8-15 13:52 编辑 ]
2013-08-15 13:46
快速回复:vfp6下:GROUP BY子句:能用输出列中的字段名或字段别名,但不能用表达 ...
数据加载中...
 
   



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

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