单价是decimal类型,需要通过公式计算出来,现在显示的是字符串,公式不计算,我希望得到计算出来的decimal类型。--sql语句如下:
SELECT T.QuoteDetId,  
  T.QuoteID,  
  T.QuoteNO,  
  T.MaterialID,  
  T.MaterialNO,
T.BatchID,  
T.IsBatch,  
replace(replace( replace(replace(T6.Formula,'单价',T.UnitPrice),'length',T5.length),'Width',T5.Width),'Weight',T5.Weight) as '单价',
T.Currency,  
  T.ExchangeRate,  
T.ActPeriodDay,  
  T.Re,  
T.InquireID,  
  T.InquireNO,  
  T.InqDetID,  
  T.SelectFlag,  
T2.IsBySupplier,  
  T3.BussinessId,  
  T3.ApproveStatus,  
  T3.CreateByID,  
  T3.ApproveEndDt
FROM dbo.MPS_QuoteDetail AS T  
  INNER JOIN dbo.MPS_Quote AS T2 ON T.QuoteID = T2.QuoteID and T.IsBatch=1
  INNER JOIN dbo.MPS_Inquire AS T3 ON T3.InquireID = T.InquireID  
  INNER JOIN dbo.MPS_InquireDetail AS T4 ON T4.InquireID = T3.InquireID  
  AND T.InqDetID=T4.InqDetID
  AND T2.ApproveStatus = 1  
  AND T.UnitPrice>0  
  INNER JOIN dbo.MPS_Material T5 on T.BatchID=T4.BatchID  
  and T4.Brand=T5.Brand
and T5.Weight between T4.WeightMin and T4.WeightMax
and T5.IsParticular=T4.IsParticular
  inner join MPS_BatchSet T6 on T5.BatchID=T6.BatchID运行结果,单价列,显示如下:
7470.0000*1194.000*889.000*190/2000000000,(不计算,结果是字符串)

解决方案 »

  1.   

    自定义一下函数exec('select 7470.0000*1194.000*889.000*190/2000000000')
      

  2.   

    功能好像是让单价的位数保持一个业务上定义的长度吧?
    不知道 select cast(decimal(业务定义表长度,业务定义表小数),单价) dj 这个转换能不能满足你的需求?
      

  3.   

    我想定义一个函数,输入字符串‘7470.0000*1194.000*889.000*190/2000000000'
                    得到结果:该数学公式运算的结果。
    用exec('select 7470.0000*1194.000*889.000*190/2000000000'),提示不Exec不允许。请问该如何解决,!!
      

  4.   

    Refer:
    http://www.cnblogs.com/insus/articles/1918684.html