主题:急 求教 关于分组查询问题,请各位帮忙 谢谢
vfpf
[专家分:0] 发布于 2009-03-21 23:21:00
表aa结构如下
rq mc sl
20090212 电脑 36
20090212 空调 22
20090212 冰箱 13
20090212 音响 18
20090213 电脑 26
20090213 空调 12
20090213 冰箱 21
20090213 音响 23
使用分组查询后想得到表CC结构如下显示
rq mc sl mc2 sl2 mc3 sl3 mc4 sl4
20090212 电脑 36 空调 22 冰箱 13 音响 18
20090213 电脑 26 空调 12 冰箱 21 音响 23
非常感谢大家的帮忙。谢谢
回复列表 (共9个回复)
沙发
jinlonggao [专家分:17130] 发布于 2009-03-22 07:50:00
如果把表CC结构修改如下:
rq 电脑 空调 冰箱 音响
20090212 36 22 13 18
20090213 26 12 21 23
岂不更好?
如此就可用我叉查询的办法解决, VFP有专门的生成向导
板凳
jinlonggao [专家分:17130] 发布于 2009-03-22 08:09:00
若非要按楼主的思意来,则用下列两句查询:
select rq,'电脑'as mc1,iif(mc='电脑',sl,0) as sl1,;
'空调'as mc2,iif(mc='空调',sl,0) as sl2,;
'冰箱'as mc3,iif(mc='冰箱',sl,0) as sl3,;
'音响'as mc4,iif(mc='音响',sl,0) as sl4,;
from aa;
into cursor aaa
select rq,max(mc1) as mc1,sum(sl1) as sl1,;
max(mc2) as mc2,sum(sl2) as sl2,;
max(mc3) as mc3,sum(sl3) as sl3,;
max(mc4) as mc4,sum(sl4) as sl4,;
from aaa;
group by rq;
into table cc
--------------------------------
若按我的方案来,则用下列查询:
select rq,sum(电脑),sum(空调),sum(冰箱),sum(音响) from;
(select rq,iif(mc='电脑',sl,0) as 电脑,iif(mc='空调',sl,0) as 空调,iif(mc='冰箱',sl,0) as 冰箱,iif(mc='音响',sl,0) as 音响 from aa) as bb;
group by rq;
into table cc
3 楼
cbl518 [专家分:57140] 发布于 2009-03-22 08:55:00
select rq,sum(电脑),sum(空调),sum(冰箱),sum(音响) from;
(select rq,iif(mc='电脑',sl,000) as 电脑,iif(mc='空调',sl,000) as 空调,iif(mc='冰箱',sl,000) as 冰箱,iif(mc='音响',sl,000) as 音响 from aa) as bb;
group by rq
4 楼
cbl518 [专家分:57140] 发布于 2009-03-22 08:58:00
高教授1楼的意见,数据结构比较合理!
5 楼
cbl518 [专家分:57140] 发布于 2009-03-22 09:00:00
按楼主的数据结构要求,一条查询语句也可以完成任务!
6 楼
vfpf [专家分:0] 发布于 2009-03-22 09:48:00
非常感谢jinlonggao和cbl518两位朋友的热情帮助,我按照jinlonggao的方案,提示语法错误,我找不出错误在哪里。
再请您帮我看看错误出现在什么地方。万分感谢,论坛有你们更精彩
select rq,sum(电脑),sum(空调),sum(冰箱),sum(音响) from;
(select rq,iif(mc='电脑',sl,0) as 电脑,iif(mc='空调',sl,0) as 空调,iif(mc='冰箱',sl,0) as 冰箱,iif(mc='音响',sl,0) as 音响 from aa) as bb;
group by rq;
into cc
7 楼
jinlonggao [专家分:17130] 发布于 2009-03-23 00:26:00
抱歉楼主,最后一行有错误,漏写了一个 "table",或按照Chibl老师修正过的句子也行.
select rq,sum(电脑),sum(空调),sum(冰箱),sum(音响) from;
(select rq,iif(mc='电脑',sl,000) as 电脑,iif(mc='空调',sl,000) as 空调,iif(mc='冰箱',sl,000) as 冰箱,iif(mc='音响',sl,000) as 音响 from aa) as bb;
group by rq;
into table cc
8 楼
狐说八道 [专家分:860] 发布于 2009-03-23 11:11:00
select rq,sum(iif(mc='电脑',sl,0)) as 电脑, sum(iif(mc='空调',sl,0)) as 空调, ;
sum(iif(mc='冰箱',sl,0)) as 冰箱, sum(iif(mc='音响',sl,0)) as 音响 ;
from aa ;
group by rq
9 楼
vfpf [专家分:0] 发布于 2009-03-24 12:42:00
谢谢各位给我的帮助。非常感谢
我来回复