CASE语句不更新临时表

时间:2014-12-08 22:54:34

标签: sql-server-2008 tsql

在下面的UPDATE声明中,InspectionChgMileageChgFuelChgFreightChg列未更新为临时表。目标是汇总费用。我尝试了几种变体,但我无法更新Temp Table Columns。

 UPDATE #TTable   
       SET ChargeCode    = id.cht_itemcode,
        InspectionChg = CASE WHEN LEFT(id.cht_itemcode, 3) = 'INS'  THEN 
        InspectionChg+id.ivd_charge ELSE InspectionChg+0 END,
        MileageChg    = CASE WHEN LEFT(id.cht_itemcode, 4) = 'MILE' THEN MileageChg+id.ivd_charge 
        ELSE MileageChg+0 END,
        FuelChg              = CASE WHEN LEFT(id.cht_itemcode, 4) = 'FUEL' THEN 
        FuelChg+id.ivd_charge ELSE FuelChg+0      END,
        FreightChg    = CASE WHEN LEFT(id.cht_itemcode, 2) = 'LH'   THEN FreightChg+id.ivd_charge 
        ELSE FreightChg+0 END,
         Rate = 1
  FROM #TTable
  INNER JOIN invoicedetail as id
     on #TTable.OrderNumber = id.Ord_hdrnumber 

有什么问题?

1 个答案:

答案 0 :(得分:1)

 UPDATE TT
 SET    TT.ChargeCode = id.cht_itemcode ,
        TT.InspectionChg = ( CASE WHEN LEFT(id.cht_itemcode, 3) = 'INS'
                                  THEN InspectionChg + id.ivd_charge
                                  ELSE InspectionChg + 0
                             END ) ,
        TT.MileageChg = ( CASE WHEN LEFT(id.cht_itemcode, 4) = 'MILE'
                               THEN MileageChg + id.ivd_charge
                               ELSE MileageChg + 0
                          END ) ,
        TT.FuelChg = ( CASE WHEN LEFT(id.cht_itemcode, 4) = 'FUEL'
                            THEN FuelChg + id.ivd_charge
                            ELSE FuelChg + 0
                       END ) ,
        TT.FreightChg = ( CASE WHEN LEFT(id.cht_itemcode, 2) = 'LH'
                               THEN FreightChg + id.ivd_charge
                               ELSE FreightChg + 0
                          END ) ,
        TT.Rate = 1
 FROM   #TTable AS TT
        INNER JOIN invoicedetail AS id ON TT.OrderNumber = id.Ord_hdrnumber