как создавать новые столбцы с помощью if - PullRequest
0 голосов
/ 01 августа 2020

У меня есть представление под названием termdate: (termid,startingdate,endingdate,pre_edning), которое выглядит так:

termid  |  startingdate  |   endingdate   |    pre_edning  |        
-----+------------+------------+------------+---------------
 227    | 1950-01-31     | 1950-12-31     |                | 
 228    | 1951-01-31     | 1951-12-31     | 1950-12-31     | 
 229    | 1952-01-31     | 1952-12-31     | 1951-12-31     |
 230    | 1953-01-31     | 1953-12-31     | 1952-12-31     | 
 231    | 1954-01-31     | 1954-12-31     | 1953-12-31     | 
 232    | 1955-01-31     | 1955-12-31     | 1954-12-31     | 
 233    | 1956-01-31     | 1956-12-31     | 1955-12-31     |

I wi sh, чтобы создать 2 новых столбца с именем new_starting, new_ending, следуя приведенным ниже правилам:

if startingdate - pre_ending>=7 
then 
new_starting := startingdate-7
new_ending := new_starting -1

Я новичок в sql, может кто-нибудь, пожалуйста, помогите мне достичь этого?

1 Ответ

1 голос
/ 01 августа 2020

Если я правильно понял, это просто case выражения:

select t.*,
       (case when startingdate >=  pre_ending + interval '7 day'  
             then startingdate - interval '7 day'
        end) as new_starting,
       (case when startingdate >= pre_ending + interval '7 day'  
             then startingdate - interval '8 day'
        end) as new_ending,
from t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...