前提・実現したいこと
以下のようなテーブルがあったときに最初の行だけの金額を伝票NOのみをWhere句に使って変更したいです。
明細テーブル
| 伝票NO | 金額 | 列3 |
|---|---|---|
| 00001 | 3,000 | |
| 00001 | 2,000 | |
| 00001 | 1,000 |
該当のソースコード
以下のような書き方をしてしまうと全件の金額が、6000円に書き換わってしまうため困っています。
UPDATE 明細 SET 金額 = 6000 WHERE ID = '00001'
補足情報(FW/ツールのバージョンなど)
SQL Server Management Studio 2017
手元に環境ないので試せないですが、下記使えませんか?
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver15
Window関数使ってもUPDATEする行の特定を「伝票NOのみ」という条件にされてしまっては、論理的に無理でしょう。
表示が最初の行などという条件は常に保証されるものでは無いので無理です。
そもそも、最初の行に意味があるのですか?
金額訂正なら他の行でも可能性はあるでしょうし。
あー、辛うじてRowNumberとCASEを使えばできるかもしれないけど…ちょっとそこまでやる意味は感じないからいいや。
何故最初の行のみ更新したいのか理由を追記して下さい。
そうすれば、識者から別の方法が出るかもしれません。
何かしらで一意にするためのカラムは必要です。無理くりやろうとしても労力のわりには効果でないのでは。
テーブル定義と編集方針を見直すのが最も確実です。
回答3件
あなたの回答
tips
プレビュー