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

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

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

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

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

4

1 回答 1

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

干杯。

于 2013-04-04T14:45:59.127 回答