0

次の SQL ステートメントがあります。

 update data 
  set [sub_st_pc]= 
    case 
          when [R 6] is not null  then [R 6] 
      when [R 5] is not null  then [R 5]
      when [R 4] is not null  then [R 4]
      when [R 3] is not null  then [R 3]
      when [R 2] is not null  then [R 2]
      else sub_st_pc
    end

しかし、次のように、それぞれの場合に応じて別の列を更新する必要があります:

 when [R 6] is not null  then [R 6], [temp] = 6
 when [R 5] is not null  then [R 5], [temp] = 5

私はそれが間違っていることを知っています。

何か案は?

4

3 に答える 3

2

COALESCEを使用すると、最初の列を簡単に設定できます。set には別の CASE ステートメントが必要であり[temp]、COALESCE は役に立ちません。

update data 
set [sub_st_pc]= COALESCE([R 6], [R 5], [R 4], [R 3], [R 2], [sub_st_pc]),
    [temp] = case 
               when [R 6] is not null  then 6 
               when [R 5] is not null  then 5
               when [R 4] is not null  then 4
               when [R 3] is not null  then 3
               when [R 2] is not null  then 2
               else NULL
             end
于 2013-01-15T21:46:32.810 に答える
1
update data 
  set [col1]= case when [R1] is not null  then [R1] else [col1] end,
      [col2]= case when [R2] is not null  then [R2] else [col2] end,
       .....
于 2013-01-15T21:45:08.027 に答える
1

あなたの質問は明確ではありません。1 つの列に対して書いたものと同様の update ステートメントを書くだけですが、多くの列に対しては、たとえば次のようになります。

update Data
set Col1 = case when Col2 is not null then col2 else Col1 end,
Col2 = case when Col3 is not null then Col3 else Col2 end
于 2013-01-15T21:46:22.163 に答える