使用select、case和subquery进行sql插入

使用select、case和subquery进行sql插入,sql,sql-server-2008,Sql,Sql Server 2008,我希望能够将交易的详细信息插入到另一个带有标签的表中(如果是退货或良好销售/交易)。我这样做是为了避免光标,所以请避免使用光标给出解决方案 我知道代码看起来不错,但我经历的是,case语句通过子查询只返回一个值 这是代码的简化版本;我有至少6种类型的案件,应该能够插入的行。我讨厌认为我必须在每一列重复每一个案例,因为实际的列数大约是38 如果这不符合逻辑,您可以建议另一种解决方法。当然,没有光标。如果无法访问您的表,并且不知道您想要实现什么,请尝试以下操作: 干杯。如果您对不同的列重复相同的逻辑

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

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

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


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

如果无法访问您的表,并且不知道您想要实现什么,请尝试以下操作:


干杯。

如果您对不同的列重复相同的逻辑,请尝试使用函数来实现。嘿,伙计。答案解决了你的问题吗?如果是这样的话,最好在上面打勾。这有助于未来的访客,也有利于回答者。
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
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)>