• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複雑な条件下におけるupdate文について)

複雑な条件下におけるupdate文について

このQ&Aのポイント
  • sqlserver(2008R2)でのクエリ文の書き方について質問です。
  • personal_tableというテーブルから一時テーブル#table01を作成し、特定の条件に基づいてデータを更新したいです。
  • 具体的なクエリを試したが、personal_nameがすべてnullになってしまいました。正しいクエリの書き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

WHERE条件に「全ての列がNullで無い」を指定したら、personal_idを網羅できますか? 同一idで複数行出てこないなら、そこから取得する。 複数行出るなら、Topキーワード使って一行に絞れば良さそう。 updateのwhere条件には、更新対象列 is Null入れとけば良いし。

noname#250977
質問者

お礼

回答ありがとうございました。 結果的に以下のクエリによって目的の動作が出来ました drop table #table01 select * into #table01 from personal_table update #table01 set personal_name = (select personal_name from #table01 A where #table01.personal_id = A.personal_id AND A.personal_date = (select MAX(B.personal_date) from #table01 B where #table01.personal_date > B.personal_date AND #table01.personal_id = B.personal_id AND B.personal_name is not null)) where personal_name is null SELECT * from #table01

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

とりあえずMAXを取得する部分のエイリアスもAであることが気になります。 B等、重複しないエイリアスにしてみては?

noname#250977
質問者

お礼

ご回答ありがとうございます。 ベストアンサーが複数出来ればしていたのですが、、、。 しかし、参考にさせていただきました。

関連するQ&A