关于SQL语句的
我有俩个表
第一个:yl_ruku,字段:ylr_num,xuhao,yl_name,yl_guige,ylr_time,ylr_shuliang,ylr_danjia,ylr_jine
对应的中文名为:原料入库编号,序号,原料名称,原料规格,原料入库时间,原料入库数量,原料入库单价,原料入库金额
第二个表:yl_chuku
字段:ylc_num,xuhao,yl_name,yl_guige,ylc_time,ylc_shuliang,ylc_danjia,ylc_jine
对应的中文名为:原料出库编号,序号,原料名称,原料规格,原料出库时间,原料出库数量,原料出库单价,原料入库金额
我要的结果是:
字段:yl_name,yl_guige,ylr_all_shuliang,ylc_all_shuliang,yl_all_shulaing,ylr_all_jiine,ylc_all_jine,yl_jine
原料名称,原料规格,原料入库总数量,原料出库总数量,原料库存总数量,原料入库总金额,原料出库总金额,原料总金额入库总数量=所有原料名称和原料规格都相同的入库数量的总和。出库总数量=所有原料名称和原料规格都相同的出库数量的总和。入库总金额=所有原料名称和原料规格都相同的入库金额的总和。出库总金额=所有原料名称和原料规格都相同的出库金额的总和。原料总金额=原料入库总金额—原料出库总金额。这个最后的Select语句怎么写啊。谢啦

解决方案 »

  1.   

    select 
      yl_name,yl_guige,
      sum(ylr_all_shuliang) as ylr_all_shuliang,
      sum(ylc_all_shuliang) as ylc_all_shuliang,
      sum(yl_all_shulaing) as yl_all_shulaing,
      sum(ylr_all_jiine) as ylr_all_jiine,
      sum(ylc_all_jine) as ylc_all_jine,
      sum(yl_jine) as yl_jine
    from ( 
    select yl_name,yl_guige,ylr_shuliang as ylr_all_shuliang,
      cast(0 as int) as ylc_all_shuliang,ylr_shuliang as yl_all_shulaing,
      ylr_jine as ylr_all_jiine,cast(0 as numeric(10,2) as ylc_all_jine,
      ylr_jine as yl_jine 
    from yl_ruku
    union all 
    select yl_name,yl_guige,0 as ylr_all_shuliang,
      ylc_shuliang as ylc_all_shuliang,-ylc_shuliang as yl_all_shulaing,
      0 as ylr_all_jiine,ylc_jine as ylc_all_jine,
      -ylc_jine as yl_jine 
    from yl_chuku
    ) as t
    group by yl_name,yl_guige;
      

  2.   

    declare  @a table (a int,b int,c int,d int) 
    declare  @b table (a int,b int,m int,n int)insert @a
    select 1,2,4,4
    union all
    select 1,2,6,6
    union all
    select 2,3,5,5insert @b
    select 1,2,3,3
    union all
    select 1,2,4,4
    union all
    select 2,3,5,5
     select * from @aselect * from @bselect
    x.a
    ,x.b 
    ,x.sumc
    ,x.sumd
    ,y.sumc
    ,y.sumd
    ,x.sumc-y.sumc
    from 
    (select a,b,sum(c)sumc,sum(d)sumd from @a
    group by a,b) x
    join
    (select a,b,sum(m)sumc,sum(n)sumd from @b
    group by a,b)y
    on x.a=y.a
    and x.b=y.b
      

  3.   

    select yl_name 原料名称,
           yl_guige 原料规格,
           sum(ylr_shuliang) 原料入库总数量,
           (select sum(ylc_shuliang) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料出库总数量,
           sum(ylr_shuliang) - (select sum(ylc_shuliang) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料库存总数量
           sum(ylr_shuliang*ylr_danjia) 原料入库总金额,
           (select sum(ylc_shuliang*ylc_danjia) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料出库总金额,
           sum(ylr_shuliang*ylr_danjia) - (select sum(ylc_shuliang*ylc_danjia) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料总金额
    from yl_ruku n
    group by yl_name ,  yl_guige--或者(不知道你的金额是按照数量*单价还是直接取ylr_jine,ylc_jine?)
    select yl_name 原料名称,
           yl_guige 原料规格,
           sum(ylr_shuliang) 原料入库总数量,
           (select sum(ylc_shuliang) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料出库总数量,
           sum(ylr_shuliang) - (select sum(ylc_shuliang) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料库存总数量
           sum(ylr_jine) 原料入库总金额,
           (select sum(ylc_jine) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料出库总金额,
           sum(ylr_jine) - (select sum(ylc_jine) from yl_chuku m where m.yl_name = n.yl_name and m.yl_guige = n.yl_guige) 原料总金额
    from yl_ruku n
    group by yl_name ,  yl_guige
      

  4.   

    select
    x.yl_name
    ,x.yl_guige 
    ,x.sumc
    ,y.sumc
    ,x.sumc-y.sumc
    ,x.sumd
    ,y.sumd
    ,x.sumc-y.sumc
    from 
    (select yl_name,yl_guige,sum(ylr_shuliang)sumc,sum(ylr_jine)sumd  from yl_ruku
    group by yl_name,yl_guige) x
    join
    (select yl_name,yl_guige,sum(ylc_shuliang)sumc,sum(ylc_jine)sumd from @b
    group by yl_name,yl_guige)y
    on x.yl_name=y.yl_name
    and x.yl_guige=y.yl_guige
      

  5.   

    select yl_name 原料名称,yl_guige 原料规格,
    sum(case type when 1 then ylr_shuliang else 0 end) 原料入库总数量,
    sum(case type when 2 then ylr_shuliang else 0 end) 原料出库总数量,
    sum(case type when 1 then ylr_shuliang else -ylr_shuliang end) 原料库存总数量,
    sum(case type when 1 then ylr_danjia*ylr_jine else 0 end) 原料入库总金额,
    sum(case type when 2 then ylr_danjia*ylr_jine else 0 end) 原料出库总金额,
    sum(case type when 1 then ylr_danjia*ylr_jine else -ylr_danjia*ylr_jine end) 原料总金额
    from
    (
      select yl_name,yl_guige,ylr_shuliang,ylr_danjia,ylr_jine ,type = 1 from yl_ruku
      union all
      select yl_name,yl_guige,ylc_shuliang ylr_shuliang,ylc_danjia ylr_danjia,ylc_jine ylr_jine ,type = 2 from yl_chuku
    ) t
    group by yl_name ,  yl_guige