2013-04-04 80 views
1
select * into #transacTbl from tmpTrans 
insert 
    select 
     (case when tmpT.TranStatus = 10 
      then(
       select ID, 'Returned') 
      else(
       select ID, 'GoodSale') 
      end) 
    from 
    (
     select * from MainTransacSource 
    ) as tmpT 

我希望能夠插入一個交易的細節到不同的表與標籤,如果它是一個返回或良好的銷售/交易。我這樣做是爲了避免光標,所以請避免使用光標給出解決方案。SQL插入使用內部的選擇,案例和子查詢

我知道代碼看起來不錯,但我遇到的是,case語句只通過子查詢返回一個值。

這是代碼的簡化版本;我至少有6種類型的情況,應該可以通過ROW插入。我討厭認爲我必須重複每個列的每個案例,因爲列的實際數量是大約38.

如果這不符合邏輯,您可能會提出另一個解決方法。當然,沒有遊標。

+0

把一個[小提琴](http://www.sqlfiddle.com) – hd1 2013-04-04 14:50:07

+0

如果你有不同的列重複相同的邏輯,嘗試使用函數來實現。 – Borik 2013-04-04 14:51:25

+0

嘿,哥們。答案是否解決了你的問題?如果是這樣,最好勾選它。這有助於未來的訪客,對回答者有益。 – 2013-04-13 05:20:39

回答

3

如果無法訪問你的表,而不是更多地瞭解正是你想要acheive,嘗試這是什麼:

select * into #transacTbl from tmpTrans 
insert 
    select tmpT.ID, 
     (case when tmpT.TranStatus = 10 
     then 'Returned' 
     else 'GoodSale' 
     end) 
    from 
     (select * from MainTransacSource) as tmpT <OR simply MainTransacSource tmpT (maybe)> 

乾杯。