У меня есть 2 столбца со значениями, столбец A и столбец B. Столбец A никогда не имеет 0 значений, но столбец B имеет, но не так много.Я бы предпочел использовать значения в столбце B, так как они более точные, но если значение равно 0, то я хотел бы использовать значение в той же строке, но в столбце A. Я бы предпочел иметь дополнительный столбецназывается C, который будет хранить в основном значения столбца B, но если он равен 0 в конкретной строке, он будет иметь значение столбца A. В Excel это легко, я просто пойду: IF (B2 = 0, A2, B2).Но я не уверен, как добиться этого в SQL.Ниже мой код:
select
date,
shift,
location as loc
Sum(columnA) as A,
Sum(columnB) as B,
from data
where date = (select max(date) from data)
and loc in ('locationA','LocationB')
group by date, shift, location, columnA, columnB
order by date, shift
Ниже я пытаюсь достичь:
Date Shift location Value A Value B Value C
21-05-2018 Day locationA 0.04122204 0.887057531 0.887057531
21-05-2019 Day locationA 0.928499827 0.580402396 0.580402396
21-05-2020 Day locationB 0.092689448 0 0.092689448
21-05-2021 Day locationA 0.848076929 0.300175453 0.300175453
21-05-2022 Day locationA 0.231515332 0 0.231515332
21-05-2023 Day locationB 0.982522662 0.560335678 0.560335678
21-05-2024 Day locationA 0.253062961 0.82718016 0.82718016
21-05-2025 Day locationA 0.334965117 0 0.334965117
21-05-2026 Day locationB 0.799616495 0.207699462 0.207699462
21-05-2027 Day locationA 0.493148616 0.368975734 0.368975734
21-05-2028 Day locationA 0.337537045 0.832800529 0.832800529
21-05-2029 Day locationB 0.520104195 0.17532647 0.17532647
21-05-2030 Day locationA 0.845699549 0 0.845699549
21-05-2031 Day locationB 0.731698971 0.132675791 0.132675791