SELECT NSR.NSRNBM, '10' ZZLX, NSRFB.FRSFZHM, NSR.SWDJZH
  FROM t_dj_jgnsr nsr,
       t_dj_jgnsrfb nsrfb,
       (SELECT YZ.NSRNBM,
               sum(SB.SWJGYHDE_JE) QNSRZE,
               0 CB,
               0 FY,
               0 SS,
               sum(SB.JSYJ) YNSSDE,
               SB.SL,
               sum(SB.YINGNSE_JE) YNSDSE,
               sum(SB.YINSE_JE) QNYJSE,
               sum(SB.BQYBTSE_JE) YBTSSDE,
               '1' LYBZ
          FROM t_sb_yzpz yz, t_sb_zhsbb sb
         WHERE SB.PZ_XH = YZ.PZ_XH
           AND SB.NSRNBM = YZ.NSRNBM
           AND sb.nsrnbm = '1015340'
           AND SB.ZSXM_DM = '06'
           AND SB.ZSPM_DM = '0200'
           AND YZ.PZZL_DM = '10191'
           AND YZ.ZF_BJ = '0'
           AND SB.SFSSQ_QSRQ >= DATE '2009-01-01'
           AND SB.SFSSQ_ZZRQ <= DATE '2009-12-31'
         GROUP BY YZ.NSRNBM, SB.SL) sbxx
 WHERE nsr.nsrnbm = nsrfb.nsrnbm

解决方案 »

  1.   

    此段SQL代码执行完成后,只显示NSRNBM, ZZLX, FRSFZHM, SWDJZH 这四个字段的值,为什么?
      

  2.   

    我想让内部的SELECT里的字段同外部的四个字段,一同显示
      

  3.   

    because you select only these 4 columns in your sql code (line 1)
      

  4.   

    你select后面就只有这4个字段啊
      

  5.   

     I guess you haven't used table sbxx, there is no condition on it.
      

  6.   


    英文不好,请用中文吧,呵呵我的条件已经满足了呀,即使我最外层的SELECT只有四个字段,但是FROM后的表,我同样查询了。GROUP BY先将第一个SELECT分组了。但按理是分组完成第一个SELECT,应该接着第二个再分组,全部同时显示。但结果却不是这样。
      

  7.   

    SELECT NSR.NSRNBM, '10' ZZLX, NSRFB.FRSFZHM, NSR.SWDJZH,
    sbxx.QNSRZE,sbxx.CB,sbxx.FY,sbxx.SS,sbxx.YNSSDE,sbxx.SL,sbxx.YNSDSE,
    sbxx.QNYJSE,sbxx.YBTSSDE,sbxx.LYBZ
      FROM t_dj_jgnsr nsr,
           t_dj_jgnsrfb nsrfb,
           (SELECT YZ.NSRNBM,
                   sum(SB.SWJGYHDE_JE) QNSRZE,
                   0 CB,
                   0 FY,
                   0 SS,
                   sum(SB.JSYJ) YNSSDE,
                   SB.SL,
                   sum(SB.YINGNSE_JE) YNSDSE,
                   sum(SB.YINSE_JE) QNYJSE,
                   sum(SB.BQYBTSE_JE) YBTSSDE,
                   '1' LYBZ
              FROM t_sb_yzpz yz, t_sb_zhsbb sb
             WHERE SB.PZ_XH = YZ.PZ_XH
               AND SB.NSRNBM = YZ.NSRNBM
               AND sb.nsrnbm = '1015340'
               AND SB.ZSXM_DM = '06'
               AND SB.ZSPM_DM = '0200'
               AND YZ.PZZL_DM = '10191'
               AND YZ.ZF_BJ = '0'
               AND SB.SFSSQ_QSRQ >= DATE '2009-01-01'
               AND SB.SFSSQ_ZZRQ <= DATE '2009-12-31'
             GROUP BY YZ.NSRNBM, SB.SL) sbxx
     WHERE nsr.nsrnbm = nsrfb.nsrnbm
    and sbxx.nsrnbm=nsr.nsrnbm
    你要的是不是这个效果?
      

  8.   

    SELECT NSR.NSRNBM, '10' ZZLX, NSRFB.FRSFZHM, NSR.SWDJZH,0 CB,
                   0 FY,
                   0 SS,
                  '1' LYBZ
      FROM t_dj_jgnsr nsr,
           t_dj_jgnsrfb nsrfb,
           (SELECT YZ.NSRNBM,
                   sum(SB.SWJGYHDE_JE) QNSRZE,
                   sum(SB.JSYJ) YNSSDE,
                   SB.SL,
                   sum(SB.YINGNSE_JE) YNSDSE,
                   sum(SB.YINSE_JE) QNYJSE,
                   sum(SB.BQYBTSE_JE) YBTSSDE,
                   FROM t_sb_yzpz yz, t_sb_zhsbb sb
             WHERE SB.PZ_XH = YZ.PZ_XH
               AND SB.NSRNBM = YZ.NSRNBM
               AND sb.nsrnbm = '1015340'
               AND SB.ZSXM_DM = '06'
               AND SB.ZSPM_DM = '0200'
               AND YZ.PZZL_DM = '10191'
               AND YZ.ZF_BJ = '0'
               AND SB.SFSSQ_QSRQ >= DATE '2009-01-01'
               AND SB.SFSSQ_ZZRQ <= DATE '2009-12-31'
             GROUP BY YZ.NSRNBM, SB.SL) sbxx
     WHERE nsr.nsrnbm = nsrfb.nsrnbm
      

  9.   


    有点关系 ,都是通过一个字段 NSRNBM 来关联的
      

  10.   


    你这样做,还不如就这样写、select YZ.NSRNBM,
           '10' ZZLX, --证照类型
           NSRFB.FRSFZHM ZZHM, --证照号码
           NSR.SWDJZH, --税务登记证号码
           sum(SB.SWJGYHDE_JE) QNSRZE, --全年收入总额
           0 CB, --成本
           0 FY, --费用
           0 SS, --损失
           sum(SB.JSYJ) YNSSDE, --应纳税所得额
           SB.SL, --税率
           sum(SB.YINGNSE_JE) YNSDSE, --应纳所得税额
           sum(SB.YINSE_JE) QNYJSE, --全年预缴税额
           sum(SB.BQYBTSE_JE) YBTSSDE, --应补退税所得额 
           '1' LYBZ --来源标志
      FROM DB_DJGL.T_DJ_JGNSR   NSR,
           DB_DJGL.T_DJ_JGNSRFB NSRFB,
           DB_SBZS.T_SB_ZHSBB   SB,
           DB_SBZS.T_SB_YZPZ    YZ
     WHERE NSR.NSRNBM = NSRFB.NSRNBM
       AND NSR.NSRNBM = SB.NSRNBM
       AND SB.NSRNBM = YZ.NSRNBM
       AND SB.PZ_XH = YZ.PZ_XH
       --AND SB.NSRNBM = '1015340'
       AND SB.ZSXM_DM = '06'
       AND SB.ZSPM_DM = '0200'
       AND YZ.PZZL_DM = '10191'
       AND YZ.ZF_BJ = '0'
       AND SB.SFSSQ_QSRQ >= DATE '2009-01-01'
       AND SB.SFSSQ_ZZRQ <= DATE '2009-12-31'
     GROUP BY YZ.NSRNBM, NSRFB.FRSFZHM, NSR.SWDJZH, SB.SL
      

  11.   

    can't type Chinese now.If you want to display the rest columns, should add them into select part.
      

  12.   


    14楼的上面的那段是不行的,我测试了,只是在后面增加了四个字段 CB FY SS
      

  13.   

    我明白了:FROM 后的括号中的 SELECT 语句,是可以正确查询到。FROM 后面是一定要紧跟表名的,而括号中的整个查询语句就相当于已经是一张表了,sbxx 是这张表的别名,也可以说是临时表。但因为受 FROM 前的字段限制,而无法显示。如果在FROM前 sbxx.字段名 就可以正确显示想要的查询结果。这样是有点罗嗦的感觉,但可能是为以后查询方便,便于方便增加或减少显示的字段而设定。不一定,非要一次性查询出全部的结果并显示。但性能上,是一次性查询快呢,还是在FROM后这样套用SELECT语句,快?