Как создать условный вычисляемый столбец в SQL? - PullRequest
0 голосов
/ 16 октября 2019

Как написать запрос для создания условного и вычисляемого поля в SQL?

Я пытаюсь объединить две или более сущностей, и контекст сущностей похож на пример ниже. У меня возникла проблема с тем, как создать вычисляемое поле со столбцом F и £ из CA . Я был бы очень признателен, если бы я мог получить некоторую помощь.

FlightTable                  AirportTable

AKEY  CODE  F    £           Code  City      Country
001   LHR   C    10          ATL   Atlanta   USA
002   BOS   C    15          BOS   Boston    USA
003   BOS   A    9            . . . . . . . . . . . . .
 . . . . . . . . .            . . . . . . . . . . . . . 
101   MAN   C    21          VIE   Schwechat Austria 
102   VIE   A    9           ZRH   Kloten    Switzerland

Я пытаюсь получить результат объединенной сущности, подобной:

Joined table

     CODE CITY    COUNTRY (£ Calculated Field)
001  BOS  Boston  USA      4
 . . . . . . . . . . . . . .

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Возможно, вы сможете использовать регистр в расчете.

     SELECT AIR.Code, AIR.City, AIR.Country, SUM(CASE WHEN flight.f = 'C' then £
                                                        when flight.f = 'A' then (-1) * £
                                                        else null
                                                        end) as "£ calculated"
     from AirportTable as "air" 
     join FlightTable as "flight" on "air".CODE = "flight".code -- could be AKEY = AKEY
0 голосов
/ 16 октября 2019

Я думаю, вы просто хотите два соединения:

select a.*, (fc.£ - fa.£) as calculation
from airporttable a join
     flighttable fc
     on fc.code = a.code and fc.f = 'C' join
     flighttable fa
     on fa.code = a.code and fa.f = 'A';
...