我现在有三个表
表1、字段名 个人编码   单位编码
             0001       5566
             0002       5566
表2、字段名  个人编码   个人交费 单位交费 核定时间
             0001       500      400       200912
             0002       300      300       200912
表3、字段名  单位编码   单位名称
             5566       十一厂
我想求一条SQL语句
求出条件为核定时间=200912相同单位的 所有人员的jf_gryj、jf_dwpe的之和,结果如下表
    单位编码   单位名称  个人交费  单位交费   个人交费+单位交费  核定时间  交费人数
      5566      十一厂    800        700       1500              200912    2
这样的Sql应该如何写
   
    

解决方案 »

  1.   

    select 表3.单位编码,表3.单位名称 ,sum(表2.个人交费),sum(表2.单位交费),sum(表2.个人交费+表2.单位交费),count(表2.个人编码) from 表1,表2,表3 where 表1.个人编码=表2.个人编码 and 表1.单位编码 =表3.单位编码 and 表2.核定时间 ='200912 ' and 表2.个人编码 in(select 个人编码 from 表1,表2 where 表1.个人编码=表2.个人编码) group by 个人编码
      

  2.   

    select 表3.单位编码,表3.单位名称 ,sum(表2.个人交费),sum(表2.单位交费),sum(表2.个人交费+表2.单位交费),count(表2.个人编码) from 表1,表2,表3 where 表1.个人编码=表2.个人编码 and 表1.单位编码 =表3.单位编码 and 表2.核定时间 ='200912 ' and 表2.个人编码 in(select 个人编码 from 表1,表2 where 表1.个人编码=表2.个人编码) group by 表2.个人编码
      

  3.   

    你这么写,得到的结果是这样的
    单位编码  单位名称  个人交费  单位交费  个人交费+单位交费  核定时间  交费人数 
    5566      十一厂    500     400      900            200912    1 
    5566      十一厂    300     300      600            200912    2 我需要得到这样的结果
    出条件为核定时间=200912相同单位的所有人员的jf_gryj、jf_dwpe的之和,结果如下表 
        单位编码  单位名称  个人交费  单位交费  个人交费+单位交费  核定时间  交费人数 
          5566    十一厂    800        700      1500              200912    2 不是相同单位一共有多少人和一共有交费多少,
      

  4.   

    你这么写,得到的结果是这样的 
    单位编码  单位名称  个人交费  单位交费  个人交费+单位交费  核定时间  交费人数 
    5566      十一厂    500    400      900            200912    1 
    5566      十一厂    300    300      600            200912    2 我需要得到这样的结果 
    出条件为核定时间=200912相同单位的所有人员的jf_gryj、jf_dwpe的之和,结果如下表 
        单位编码  单位名称  个人交费  单位交费  个人交费+单位交费  核定时间  交费人数 
          5566    十一厂    800        700      1500              200912    2 
      

  5.   

    select a.单位编码 ,a.单位名称,b.个人交费总和,b.单位交费总和,b.总和,b.总人数,b.核定时间 from(select * from 表1,表2 where 表1.个人编码=表2.个人编码)a left join (个人编码 ,sum(个人交费) as 个人交费总和,sum(单位交费) as 单位交费总和,sum(个人交费+单位交费) as 总和,count(个人编码) as 总人数,核定时间 from 表2  group by 个人编码)b on a.个人编码=b.个人编码) where b.核定时间 ='200912 '
      

  6.   

    晕,少了表达式:
    select a.单位编码 ,a.单位名称,b.个人交费总和,b.单位交费总和,b.总和,b.总人数,b.核定时间 from(select * from 表1,表2 where 表1.个人编码=表2.个人编码)a left join (select 个人编码 ,sum(个人交费) as 个人交费总和,sum(单位交费) as 单位交费总和,sum(个人交费+单位交费) as 总和,count(个人编码) as 总人数,核定时间 from 表2  group by 个人编码)b on a.个人编码=b.个人编码) where b.核定时间 ='200912 '
      

  7.   

    create table t1(pcode varchar2(20),ccode varchar2(20));
    insert into t1 values('0001','5566');
    insert into t1 values('0002','5566');
    create table t2(pcode varchar2(20),pf int,cf int,ct varchar2(20));
    insert into t2 values('0001',500,400,'200912');
    insert into t2 values('0002',300,300,'200912');create table t3(ccode varchar2(20),cname varchar2(50));
    insert into t3 values('5566','十一厂');
    select t1.ccode 单位编码,t3.cname 单位名称,sum(t2.pf) 个人交费,sum(t2.cf) 单位交费,
    sum(t2.pf+t2.cf) 合计交费,count(*) 交费人数 
    from t1,t2,t3
    where t1.pcode=t2.pcode
    and t1.ccode=t3.ccode
    group by t1.ccode,t3.cname
      

  8.   

    select t1.ccode 单位编码,t3.cname 单位名称,sum(t2.pf) 个人交费,sum(t2.cf) 单位交费,
    sum(t2.pf+t2.cf) 合计交费,t2.ct 核定时间,count(*) 交费人数
    from t1,t2,t3
    where t1.pcode=t2.pcode
    and t1.ccode=t3.ccode
    group by t1.ccode,t3.cname,t2.ct忘把核定时间加上了。结果:
    5566 十一厂 800 700 1500 200912 2
      

  9.   

    select 
    表3.单位编码, 表3.单位名称, 
    sum(表2.个人交费), sum(表2.单位交费), 
    sum(表2.个人交费 + 单位交费),
    表2.核定时间,
    sum(表2.个人编码)
    from 表3 left join 表1 on
    表3.单位编码 = 表1.单位编码 left join 表2 on
    表1.个人编码 = 表2.个人编码
    where 表2.核定时间 = '200912'
    group by 表3.单位编码
      

  10.   

    create table t1(pcode varchar(20),ccode varchar(20)); 
    insert into t1 values('0001','5566'); 
    insert into t1 values('0002','5566'); 
    create table t2(pcode varchar(20),pf int,cf int,ct varchar(20)); 
    insert into t2 values('0001',500,400,'200912'); 
    insert into t2 values('0002',300,300,'200912'); create table t3(ccode varchar(20),cname varchar(50)); 
    insert into t3 values('5566','十一厂'); select a.ccode  as 单位编码,
           t3.cname as 单位名称,
           a.pf     as 个人交费,
           a.cf     as 单位交费,
           a.pfcf   as 个人交费单位交费,
           a.ct     as 交费时间,
           a.countp as 交费人数
      from t3,
           (select t1.ccode ccode,
                   sum(pf) pf,
                   sum(cf) cf,
                   sum(pf) + sum(cf) pfcf,
                   t2.ct ct,
                   count(t2.pcode) countp
              from t1, t2
             where t1.pcode = t2.pcode
             group by t1.ccode, t2.ct
            having t2.ct = '200912') a
     where t3.ccode = a.ccode这个基本能满足要求.
      

  11.   

    一个基本的SQL语句都懒得写......
    真够可以的!
    搞清楚表与表之间关系后,用
    表A Left Join 表B Inner Join 表C,字段该SUM的SUM