declare @sql nvarchar(4000)
declare @GroupId intset @GroupId = 350
set @sql='SELECT ''upload/''+left(BarCode,7)+''_s_1.jpg'' as ListImg,FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode) as Number,RuleId,Econ_Rule.PicM as PicM,(SUM(TProduct.Balance)-SUM(TProduct.ReservedQty)) as PBalance FROM TProduct left join Econ_Rule on Econ_Rule.PKID =RuleId Where GroupID = ' +cast(@GroupID as varchar(20)) + ' And UPPER(TProduct.Valid) =''T'' And UPPER(TProduct.IsAd) =''T'' And PBalance > 0 Group by ''upload/''+left(BarCode,7)+''_s_1.jpg'',FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode),RuleId,PicM '
--print @sql
execute(@sql)
列名 'PBalance' 无效。大家帮帮忙啊!

解决方案 »

  1.   

    把PBalance拿出来做select *
    from(
    SELECT 'upload/'+left(BarCode,7)+'_s_1.jpg' as ListImg
    ,FullName,SalePrice,MarketPrice
    ,dbo.Get_goods_id (ProductCode) as Number
    ,RuleId,Econ_Rule.PicM as PicM
    ,(SUM(TProduct.Balance)-SUM(TProduct.ReservedQty)) as PBalance FROM TProduct left join Econ_Rule on Econ_Rule.PKID =RuleId Where GroupID = 350 And UPPER(TProduct.Valid) ='T' And UPPER(TProduct.IsAd) ='T'
    Group by 'upload/'+left(BarCode,7)+'_s_1.jpg',FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode),RuleId,PicM 
    )Tmep
    where PBalance > 0 
      

  2.   

    declare @sql nvarchar(4000)
    declare @GroupId intset @GroupId = 350
    set @sql='select * from (SELECT ''upload/''+left(BarCode,7)+''_s_1.jpg'' as ListImg,FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode) as Number,RuleId,Econ_Rule.PicM as PicM,(SUM(TProduct.Balance)-SUM(TProduct.ReservedQty)) as PBalance FROM TProduct left join Econ_Rule on Econ_Rule.PKID =RuleId Where GroupID = ' +cast(@GroupID as varchar(20)) + ' And UPPER(TProduct.Valid) =''T'' And UPPER(TProduct.IsAd) =''T'' Group by ''upload/''+left(BarCode,7)+''_s_1.jpg'',FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode),RuleId,PicM ) a where PBalance > 0 '
    print @sql
    execute(@sql)
      

  3.   

    --计算得到的别名不能用于条件中.
    declare @sql nvarchar(4000)
    declare @GroupId intset @GroupId = 350
    set @sql='select * from (SELECT ''upload/''+left(BarCode,7)+''_s_1.jpg'' as ListImg,FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode) as Number,RuleId,Econ_Rule.PicM as PicM,(SUM(TProduct.Balance)-SUM(TProduct.ReservedQty)) as PBalance FROM TProduct left join Econ_Rule on Econ_Rule.PKID =RuleId Where GroupID = ' +cast(@GroupID as varchar(20)) + ' And UPPER(TProduct.Valid) =''T'' And UPPER(TProduct.IsAd) =''T'' Group by ''upload/''+left(BarCode,7)+''_s_1.jpg'',FullName,SalePrice,MarketPrice,dbo.Get_goods_id (ProductCode),RuleId,PicM) t where PBalance > 0 '
    print @sql
    execute(@sql)