sql插入使用select,case和子查询里面

时间:2013-04-04 14:39:17

标签: sql sql-server-2008

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

我希望能够将交易的详细信息插入到带有标签的不同表中,如果它是退货或良好的销售/交易。我这样做是为了避免光标,所以请避免使用光标给出解决方案。

我知道代码看起来不错,但我遇到的是,case语句只通过子查询返回一个值。

这是代码的简化版本;我有至少6种类型的案例,应该能够通过ROW插入。我不认为我必须重复每列的每个案例,因为实际的列数大约是38。

如果这不符合逻辑,您可以建议另一种解决方法。当然,没有光标。

1 个答案:

答案 0 :(得分:3)

如果无法访问您的表格并且不了解您想要实现的内容,请尝试类似

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)>

干杯。