我有多个表要进行sum按照一定的条件分类汇总,但是当有一个表没有数据的时候,没有数据出来,我该如何去写这段select ???

解决方案 »

  1.   

    select 0 field1,0 field2
    union all
    select sum(f1) as field1,sum(f2) as field2
    from table
    where condition
      

  2.   

    select 零件报价部分.零件编号,STR(sum(采购报价部分2.数量*采购报价部分2.单价),9,2) as 采购费 ,STR(sum(外协报价部分4.数量*外协报价部分4.加工费),9,2) as 外协费 ,材料报价部分3.材料费,表面处理.处理费,STR(sum(加工费.数量*加工费.单价),9,2)as 加工费 from 采购报价部分2,外协报价部分4,加工费,材料报价部分3,表面处理.处理费,零件报价部分  where 零件报价部分.零件编号 IN " & fs & " and 采购报价部分2.零件编号=零件报价部分.零件编号 and 外协报价部分4.零件编号 =零件报价部分.零件编号 and 材料报价部分3.零件编号=零件报价部分.零件编号 and 零件报价部分.零件编号=加工费.零件编号  and 表面处理.零件编号=零件报价部分.零件编号  group by 零件报价部分.零件编号 ,材料报价部分3.材料费,表面处理.处理费"我的where中如果有一个表没有这个零件编号的信息我就不能汇总了。
      

  3.   

    还有我的ado出现这个问题。我有张表字段为。日期,定单编号,合同编号,产品id,零件编号,零件数量,完成日期,客户要求等。
    可当我以前加如数据是都很正常,现在代码没有改过,出现debug.print rst.fields(0).name
    不是“日期”这个字段名,而是“定单编号”,我个朋友对我说是vb的ado问题。说要 用vb.net 开发就没有这是了.bcb也有这现象.ado数据回显也好,它的数据指针有问题,能帮我分析一下好吗?
      

  4.   

    select 零件报价部分.零件编号,STR(sum(采购报价部分2.数量*采购报价部分2.单价),9,2) as 采购费 ,STR(sum(外协报价部分4.数量*外协报价部分4.加工费),9,2) as 外协费 ,材料报价部分3.材料费,表面处理.处理费,STR(sum(加工费.数量*加工费.单价),9,2)as 加工费 from 采购报价部分2,外协报价部分4,加工费,材料报价部分3,表面处理,零件报价部分  where 零件报价部分.零件编号 IN " & fs & " and 采购报价部分2.零件编号=零件报价部分.零件编号 and 外协报价部分4.零件编号 =零件报价部分.零件编号 and 材料报价部分3.零件编号=零件报价部分.零件编号 and 零件报价部分.零件编号=加工费.零件编号  and 表面处理.零件编号=零件报价部分.零件编号  group by 零件报价部分.零件编号 ,材料报价部分3.材料费,表面处理.处理费"我的where中如果有一个表没有这个零件编号的信息我就不能汇总了。零件报价部分 (表)
    (零件编号,客户简称,报价人,说明)
      a         b           wang  
    采购报价部分2(表)
     (零件编号,序号,采购件名称,数量,单价)
     a            1      b           3    30.01
     a            2      c           1    140.01外协报价部分4
     
     (零件编号,序号,外协件名称,数量,单价)
       a          1       bc         1    400.00
       a          2       cc         3    120.30
    材料报价部分3
     (零件编号,材料名称,长,宽 ,厚,比重,材料单价)
        a        spcc     1000  100  150  7.85  300
    表面处理
     (零件编号,处理方法,单双,处理费)
       a         电镀       单面  800
    模具部分5
     
     (零件编号,序号,模具编号,数量,单价)
        a         1     b01        2    200
        a          2    b-02       3    300