select  (case c.主要来源 when 0 then c.标准进价 else c.平均成本 end) * isnull(a.库存数量,0)  as  年终自制件库存成本 
from from 产品 c left join 仓库月初库存 a on c.料号=a.料号號
where a.年月='2003/01'

解决方案 »

  1.   

    select ...,case when c.主要来源=0 then c.标准进价*a.库存数量 
    else null end as 年终采购件库存成本,
    case when c.主要来源<>0 then c.平均成本*a.库存数量
    else null end as 年终自制件库存成本
    from 产品  left join 仓库月初库存 a on c.料号=a.料号號
    where a.年月='2003/01'or:select ...,case when c.主要来源=0 then c.标准进价*a.库存数量 
    else c.平均成本*a.库存数量
    end as 年终库存成本
    from 产品  left join 仓库月初库存 a on c.料号=a.料号號
    where a.年月='2003/01'
      

  2.   

    select (case c.主要来源 when 0 
    then c.标准进价*a.库存数量
    else
     c.平均成本*a.库存数量 end )
    from 产品  left join 仓库月初库存 a on c.料号=a.料号號
    where a.年月='2003/01'
      

  3.   

    hjhing(winding) CCEO() 的答案都是可以的。
    if 条件
     begin
     处理
     end
    else
     begin
     处理
     end
    这个结构不适合您的这种语句。
      

  4.   

    因为在学if...else 语法,所以想用这中语法写.
      

  5.   

    declare @SQL varchar(8000)
    set @SQL='select '
    if c.主要来源=0
      set @SQL=@SQL+'c.标准进价*a.库存数量as 年终采购件库存成本 '
    else
      set @SQL=@SQL+'c.平均成本*a.库存数量 as 年终自制件库存成本 'set @SQL=@SQL+'from 产品  left join 仓库月初库存 a on c.料号=a.料号號
    where a.年月=''2003/01'''exec(@SQL)
      

  6.   

    select case c.主要来源 when 0 then c.标准进价*a.库存数量 else c.平均成本*a.库存数量 end 年终采购件库存成本 from  产品  left join 仓库月初库存 a on c.料号=a.料号號 where a.年月='2003/01'
      

  7.   

    pengdali,你的if语法又点错误喔,提示如下:伺服器:讯息 107,层阶:16,状态2,行 3
    资料行前置词'c'与用於查询中的资料表名称或别名不符。