私はこのようなリストを持っています:
| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
| -0.5 | 23 | 25 | 0 |
| 0.6 | 23 | 25 | 0 |
| 0.7 | 23 | 25 | 0 |
勾配列の符号に応じて、下限列と上限列から制限列の値を更新したいと思います。結果のテーブルは次のようになります。
| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
| -0.5 | 23 | 25 | 23 |
| 0.6 | 23 | 25 | 25 |
| 0.7 | 23 | 25 | 25 |
現在ifを使用していますが、列全体の値が変更されるため、制限列のすべての値が25になります。
CASE WHEN
アップデートで使ってみてはいかがでしょうか。
CREATE TABLE T(
slope FLOAT,
lower_limit INT,
upper_limit INT,
limit INT
);
INSERT INTO T VALUES (-0.5,23,25,0);
INSERT INTO T VALUES (0.6,23,25,0);
INSERT INTO T VALUES (0.7,23,25,0);
UPDATE T
SET limit = CASE WHEN slope > 0 THEN upper_limit
ELSE lower_limit END
クエリ1:
select * from t
結果:
| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
| -0.5 | 23 | 25 | 23 |
| 0.6 | 23 | 25 | 25 |
| 0.7 | 23 | 25 | 25 |
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加