将值从一列复制到另一条sql

时间:2018-10-04 21:34:19

标签: sql sql-server

我有一个这样的列表:

| 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,但是它会更改整个列的值,导致limit列中的所有值均为25

1 个答案:

答案 0 :(得分:4)

我认为您可以尝试在更新中使用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

Results

| slope | lower_limit | upper_limit | limit |
|-------|-------------|-------------|-------|
|  -0.5 |          23 |          25 |    23 |
|   0.6 |          23 |          25 |    25 |
|   0.7 |          23 |          25 |    25 |