select A.a,
        (select B.b from B c where B.flg = '1' and b.id=c.id ) as bb
  from A,B where a.id=b.id

解决方案 »

  1.   

    select A.a,
            (select max(B.b) from B c where B.flg = '1' and b.id=c.id ) as bb
      from A,B where a.id=b.id
      

  2.   

    现在我把精简的sql写给大家
    表:
    jygxc_d 列xh(主),jydm(外键,来自jydm.jydm),ly,f_xh(外键,来自  jygxc_m.xh),qckc,gjhjjygxc_m 列xh(主),gsdmjydm(此处未用)  列jydm(主)SELECT DISTINCT jygxc_d.jydm,
           qckc,
                    sum( jygxc_d.gjhj) as gjhj,
    FROM jygxc_d,jygxc_m  
    WHERE ( jydm.jydm = jygxc_d.jydm )and
          ( jygxc_m.xh = jygxc_d.f_xh ) and 
          (jygxc_m.gsdm = '001') AND 
          (jygxc_d.ly >= '200201') AND 
          (jygxc_d.ly <= '200203')  and
          qckc in( 
      SELECT jygxc_d.qckc
      FROM   jygxc_d,jygxc_m
      WHERE  (jygxc_m.xh = jygxc_d.f_xh ) and 
                    ( jygxc_m.gsdm = '001' ) AND 
                            (jygxc_d.ly = '200201')
        )
    GROUP BY jygxc_d.jydm,jygxc_d.qckc;理想运行结果如下
    jydm         qckc                           gjhj
    01    1(此处为1月份的qckc)     2(此处为1到3月份的gjhj合计)
    02    2(此处为1月份的qckc)     2(此处为1到3月份的gjhj合计)
    03    3(此处为1月份的qckc)     2(此处为1到3月份的gjhj合计)..............................行数为jydm表的行数(就是列jydm不会重复)实际运行结果为
    jydm         qckc                           gjhj
    01    1(此处为1月份的qckc)     2(此处为1到3月份的gjhj合计)
    01    2(此处为2月份的qckc)     2(此处为1到3月份的gjhj合计)
    02    2(此处为1月份的qckc)     2(此处为1到3月份的gjhj合计)
    03    3(此处为1月份的qckc)     2(此处为1到3月份的gjhj合计)原因:
        二月份的jydm = 01 的qckc 同一月份的jydm = 02 的qckc 相等!!怎么解决?
      

  3.   

    jygxc_d表:
     Xh Numeric(12) 主键
     F_xh Numeric(12) 外键 Jygxc_m.xh
     Jydm Varhcar(20) 外键 Jydm.jydm
     ly Char(6)
     Xshj Decimal(12,2)
    jygxc_m表:
     Xh Numeric(12)       主键
     Gsdm varchar(20)
     Ly Char(6)
    jydm表
     Jydm Varchar(20)       主键
     dcswbz Char(1)
     Wzsx Numeric(4)