| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2776 人关注过本帖
标题:如何运用SELECT - SQL 命令
只看楼主 加入收藏
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:2 
不知是不是我理解错了,不是很复杂啊,先合并,再分组统计.

SELECT A.ZD1 ,SUM(A.ZD2) AS ZD2,SUM(A.ZD3) AS ZD3 FROM (
SELECT ZD1,ZD2,0 AS ZD3 FROM 表1 UNION ALL SELECT ZD1,0 AS ZD2, ZD2 AS ZD3 FROM 表2
) A
GROUP BY A.ZD1
2010-03-10 10:13
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
谢谢hgfeng1984,你的

SELECT A.ZD1 ,SUM(A.ZD2) AS ZD2,SUM(A.ZD3) AS ZD3 FROM (SELECT ZD1,ZD2,0 AS ZD3 FROM 表A UNION ALL SELECT ZD1,0 AS ZD2, ZD2 AS ZD3 FROM 表B) A GROUP BY A.ZD1

在9.0 运行成功,并且没有.NULL.  。.NULL.有时很麻烦。

为什么在8.0不能运行。难道8.0没有相应的命令程序?请老师们指教,谢谢。
2010-03-10 12:03
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:0 
这里没有涉及到只有9.0才有的功能,我想8.0应该也可以,不知你试过没有.
因为用的合并,所以没有null.
2010-03-10 12:17
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:2 
以下是引用hgfeng1984在2010-3-10 10:13:53的发言:

不知是不是我理解错了,不是很复杂啊,先合并,再分组统计.

SELECT A.ZD1 ,SUM(A.ZD2) AS ZD2,SUM(A.ZD3) AS ZD3 FROM (
SELECT ZD1,ZD2,0 AS ZD3 FROM 表1 UNION ALL SELECT ZD1,0 AS ZD2, ZD2 AS ZD3 FROM 表2
) A
G ...

哈哈, 有意思, 我也来句 与众不同的代码, full join的~

sele j.new_zd1 zd1,j.zd2,j.zd3 from (sele nvl(表a.zd1,k.zd1) new_zd1, 表a.zd2 zd2, k.zd3;
     from 表a full join (sele zd1,sum(zd2) zd3 from 表b grou by zd1) k on 表.zd1=k.zd1 orde by new_zd1) j
2010-03-10 12:33
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
谢谢hgfeng1984老师,我在8.0运行过你的程序,不知为什么运行错误。请你多加指教。
2010-03-10 12:42
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
谢谢茵梦湖老师,你的

sele j.new_zd1 zd1,j.zd2,j.zd3 from (sele nvl(表a.zd1,k.zd1) new_zd1, 表a.zd2 zd2, k.zd3 ;
     from 表a full join (sele zd1,sum(zd2) zd3 from 表b grou by zd1) k on 表a.zd1=k.zd1 orde by new_zd1) j

程序在9.0运行正确。但是不知为什么在8.0不能运行。在8.0有没有相应的程序命令。以前也得到过你的不少帮助,在此再次谢谢了。
2010-03-10 12:53
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:0 
以下是引用qingfameng在2010-3-10 00:34:52的发言:

如果字段都是字符型:vfp6.0下运行 得到表 cc

close all
sele nvl(表a.zd1,表b.zd1) zd1,表a.zd2 as zd2, val(表b.zd2) as zd3 from (表a full join 表b on 表a.zd1=表b.zd1) into cursor gg
total to cc on zd1 fi ...
程序的意思是:假如表a和表b的字段都是字符型的。
如果是在vfp 6.0 及以上版本,都能简单实现的话。如上写法运行不会错的。请再试试!再试试!
2010-03-10 15:03
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
收藏
得分:2 
panpende:用下面的命令在9.0运行通过。
SELECT A0.ZD1 ,SUM(A0.ZD2) ZD2,SUM(A0.ZD3) ZD3 FROM (SELECT ZD1,ZD2,0 ZD3 FROM 表A UNION ALL SELECT ZD1,0 ZD2,ZD2 ZD3 FROM 表B) A0 GROUP BY A0.ZD1

在8.0中把上面的命令分解为下面的4条命令,在命令行逐一运行,看看是哪一句不能运行,也就是8.0不支持的语法。因为我没有安装8.0,希望你能反馈运行的信息,以便另寻途径解决问题。

SELECT ZD1,ZD2,0 ZD3 FROM 表A  INTO CURSOR A1
SELECT ZD1,0 ZD2,ZD2 ZD3 FROM 表B INTO CURSOR A2
SELECT * FROM A1 UNION ALL SELECT * FROM A2 INTO CURSOR A0
SELECT ZD1,SUM(ZD2) ZD2,SUM(ZD3) ZD3 FROM A0 GROUP BY ZD1



[ 本帖最后由 sywzs 于 2010-3-11 09:53 编辑 ]
2010-03-11 09:48
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
谢谢sywzs
在8.0中把你的命令分解为
SELECT ZD1,ZD2,0 AS ZD3 FROM 表A UNION ALL SELECT ZD1,0 AS ZD2, ZD2 AS ZD3 FROM 表B INTO TABLE A
SELECT A.ZD1 ,SUM(A.ZD2) AS ZD2,SUM(A.ZD3) AS ZD3 FROM  A GROUP BY A.ZD1

运行通过。好像8.0不支持 () 操作。老师,是不是?

2010-03-11 10:34
panpende
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:528
专家分:963
注 册:2009-4-27
收藏
得分:0 
在8.0中把 hgfeng1984的命令分 解为

SELECT ZD1,ZD2,0 AS ZD3 FROM 表A UNION ALL SELECT ZD1,0 AS ZD2, ZD2 AS ZD3 FROM 表B INTO TABLE A
SELECT A.ZD1 ,SUM(A.ZD2) AS ZD2,SUM(A.ZD3) AS ZD3 FROM  A GROUP BY A.ZD1

运行通过。

好像8.0不支持 () 操作。老师,是不是?

我喜欢hgfeng1984的命令,因为结果中没有.NULL.
2010-03-11 10:52
快速回复:如何运用SELECT - SQL 命令
数据加载中...
 
   



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

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