Хотите взять разницу двух столбцов в Sql - PullRequest
0 голосов
/ 25 июня 2018

Я хочу взять разницу столбцов таблицы. У нас есть имя столбца как Planned_date, так что теперь я хочу взять разницу этих двух столбцов

A = Planned_Date of stop1 - Planned_Date of stop5

Так, как я могу записать запрос вполучить значение A ниже, это пример запроса, который я написал, но почему-то он не работает для меня.

select (select planned_arrival as val1 
        from shipment_stop 
         where stop_num = 1 
         and shipment_gid = 'IFFCO/LOGISTICS.L171009358')
       -
      (select planned_arrival as val2 
       from shipment_stop 
       where stop_num = 5 
       and shipment_gid = 'IFFCO/LOGISTICS.L171009358')

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Ваш запрос должен работать с предложением from:

select (select planned_arrival as val1 
        from shipment_stop 
         where stop_num = 1 
         and shipment_gid = 'IFFCO/LOGISTICS.L171009358')
       -
      (select planned_arrival as val2 
       from shipment_stop 
       where stop_num = 5 
       and shipment_gid = 'IFFCO/LOGISTICS.L171009358')
from dual;

Лично я написал бы это, используя условное агрегирование:

select (max(case when stop_num = 1 then planned_arrival end) -
        max(case when stop_num = 5 then planned_arrival end)
       )
from shipment_stop 
where stop_num in (1, 5) and 
      shipment_gid = 'IFFCO/LOGISTICS.L171009358';
0 голосов
/ 25 июня 2018

Попробуйте это -

SELECT
    s1.planned_arrival - s2.planned_arrival AS val
FROM
    shipment_stop s1,
    shipment_stop s2
WHERE
    s1.stop_num = 1
    AND s2.stop_num = 5
    AND s1.shipment_gid = 'IFFCO/LOGISTICS.L171009358'
    AND s1.shipment_gid = s2.shipment_gid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...