Сравнение двух значений столбца в postgres - PullRequest
0 голосов
/ 24 октября 2019

У меня есть таблица, имеющая следующие столбцы и записи. Мне нужно сравнить два значения столбца (ColumnA и ColumnB), если ColumnB> ColumnA, а затем обновить третий столбец с 'N' до 'Y'

CREATE TABLE Test(ColumnA int,ColumnB int,Result Varchar(2))

INSERT INTO Test values(1,3,'N')
INSERT INTO Test values(2,1,'N')
INSERT INTO Test values(1,5,'N')
INSERT INTO Test values(8,7,'N')

Мне нужно обновить Result Column = 'Y'для первой и третьей строки, так как columnB> ColumnA

Result

ColumnA   ColumnB Result
1          3      Y
2          1      N
1          5      Y
8          7      N

Ответы [ 2 ]

4 голосов
/ 24 октября 2019

Это можно сделать с помощью простого выражения CASE:

update test
  set result = case 
                 when columna > columnb then 'Y' 
                 else 'N' 
               end
;

Онлайн-пример: https://rextester.com/ZHIUZD82060


Я бы порекомендовал использовать столбец boolean вместоvarchar для хранения флагов "да / нет". Тогда обновление становится таким простым, как set result = column_a > columnb

1 голос
/ 24 октября 2019
update test
set result = 
    case
        when columnb > columna then 'Y'
        else 'N'
    end;

Надеюсь, это поможет.

...