回 帖 发 新 帖 刷新版面

主题:急 求教 关于分组查询问题,请各位帮忙 谢谢

表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个回复)

沙发

如果把表CC结构修改如下:
rq         电脑  空调   冰箱  音响
20090212    36    22    13     18
20090213    26    12    21     23
岂不更好?
如此就可用我叉查询的办法解决, VFP有专门的生成向导

板凳

若非要按楼主的思意来,则用下列两句查询:

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 楼

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 楼

高教授1楼的意见,数据结构比较合理!

5 楼

按楼主的数据结构要求,一条查询语句也可以完成任务!

6 楼

非常感谢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 楼

抱歉楼主,最后一行有错误,漏写了一个 "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 楼

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 楼

谢谢各位给我的帮助。非常感谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册