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 ステートメントがサブクエリを介して 1 つの値しか返さないということです。

これはコードの簡略版です。少なくとも 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 に答える