CREATE proc 成本卡_进料汇总统计
@开始日期 nvarchar(50),
@结束日期 nvarchar(50)
as
SELECT 原料编号,名称,sum(数量) 数量,sum(金额) as 金额 FROM
(
select 原料_seq as  原料编号,产品名称_1 as 名称,sum(数量) 数量,sum(数量*单位_seq) as 金额,C_库存明细.原料批号 from C_库存明细历史库,产品单价级别表,产品表 
where 交易_seq in( select 单据_seq from C_进料单据 where 盘点单据=0 and 状态=2) 
and 明细类型=0 and 原料_seq=mi_price_seq and 产品单价级别表.产品_ID=产品表.产品_ID 
and convert(varchar(10),C_库存明细历史库.日结日期,23)>=@开始日期 and convert(varchar(10),C_库存明细历史库.日结日期,23)<=@结束日期
group by 原料_seq,产品名称_1,原料批号
union all 
select 原料_seq as  原料编号,产品名称_1 as 名称,sum(数量) 数量,sum(数量*单位_seq) as 金额,C_库存明细.原料批号 from C_库存明细,产品单价级别表,产品表 
where 交易_seq in( select 单据_seq from C_进料单据 where 盘点单据=0 and 状态=1) 
and 明细类型=0 and 原料_seq=mi_price_seq and 产品单价级别表.产品_ID=产品表.产品_ID 
and convert(varchar(10),C_库存明细.日结日期,23)>=@开始日期 and convert(varchar(10),C_库存明细.日结日期,23)<=@结束日期
group by 原料_seq,产品名称_1,原料批号
)  A GROUP BY 原料编号,名称,原料批号 ORDER BY 原料编号GO

解决方案 »

  1.   


    select 原料_seq as 原料编号,产品名称_1 as 名称,sum(数量) 数量,sum(数量*单位_seq) as 金额,C_库存明细.原料批号 from C_库存明细历史库,产品单价级别表,产品表  
    where 交易_seq in( select 单据_seq from C_进料单据 where 盘点单据=0 and 状态=2)  
    and 明细类型=0 and 原料_seq=mi_price_seq and 产品单价级别表.产品_ID=产品表.产品_ID  
    and convert(varchar(10),C_库存明细历史库.日结日期,23)>=@开始日期 and convert(varchar(10),C_库存明细历史库.日结日期,23)<=@结束日期
    group by 原料_seq,产品名称_1,原料批号
    这出错了。
      

  2.   

    C_库存明细.原料批号,这个要在group by 字句里指明。
      

  3.   

    CREATE proc 成本卡_进料汇总统计
    @开始日期 nvarchar(50),
    @结束日期 nvarchar(50)
    as
    SELECT 原料编号,名称,sum(数量) 数量,sum(金额) as 金额,原料批号 FROM
    (
    select 原料_seq as  原料编号,产品名称_1 as 名称,sum(数量) 数量,sum(数量*单位_seq) as 金额,原料批号 from C_库存明细历史库,产品单价级别表,产品表 
    where 交易_seq in( select 单据_seq from C_进料单据 where 盘点单据=0 and 状态=2) 
    and 明细类型=0 and 原料_seq=mi_price_seq and 产品单价级别表.产品_ID=产品表.产品_ID 
    and convert(varchar(10),C_库存明细历史库.日结日期,23)>=@开始日期 and convert(varchar(10),C_库存明细历史库.日结日期,23)<=@结束日期
    group by 原料_seq,产品名称_1,原料批号
    union all 
    select 原料_seq as  原料编号,产品名称_1 as 名称,sum(数量) 数量,sum(数量*单位_seq) as 金额,原料批号 from C_库存明细,产品单价级别表,产品表 
    where 交易_seq in( select 单据_seq from C_进料单据 where 盘点单据=0 and 状态=1) 
    and 明细类型=0 and 原料_seq=mi_price_seq and 产品单价级别表.产品_ID=产品表.产品_ID 
    and convert(varchar(10),C_库存明细.日结日期,23)>=@开始日期 and convert(varchar(10),C_库存明细.日结日期,23)<=@结束日期
    group by 原料_seq,产品名称_1,原料批号
    )  A GROUP BY 原料编号,名称,原料批号 ORDER BY 原料编号
    GO,这是改正确后的
      

  4.   

    汗,我知道哪里错了,C_库存明细.原料批号 from C_库存明细历史库,产品单价级别表,产品表  ,上面那个表没有C_库存明细
      

  5.   

    group by 的时候,列名要对应一致。