Sql запрос для получения вывода на основе 3 столбцов в oracle SQL - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть сценарий, где у меня есть 3 столбца, т.е. liqn_days, liq_months и liqn_years. Так что, если liqn_days имеют значение, а другие равны 0, выведите Monthly. или liq_months равен 3, остальные равны 0, а затем выводятся как квартально. или liq_months равен 6, а другие столбцы равны 0, тогда вывод будет полугодовым, или liqn_years будет иметь значение, или другие будут равны 0, тогда вывод будет годовым.

liqn_days  liq_months  liqn_years 

0          0            1

12        0             0

0         3             0

ouput for 1st row - Yearly
ouput for 2st row  - Monthly
output for 3rd row - quarterly

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

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Вы можете использовать case выражение:

select t.*, (case when liqn_days > 0 and liq_months = 0 and liqn_yearsand = 0
                  then 'Monthly'
                  when liq_months = 3 and liqn_days = 0 and liqn_yearsand = 0
                  then 'quarterly'
                  when liq_months =  6 and liqn_days = 0 and liqn_yearsand = 0
                  then 'half yearly'
                  when liq_months =  0 and liqn_days = 0 and liqn_yearsand > 0
                  then ' yearly' 
                  else 'other'
             end)
from table t;  
0 голосов
/ 20 февраля 2020

Вы можете также объединить пользователя all

WITH da(Other_columns,liqn_years, liq_months, liqn_days) AS ( 
SELECT 'Other_colums', 0,0,1 FROM dual
UNION ALL SELECT 'Other_colums',12,0,0 FROM dual
UNION ALL SELECT 'Other_colums',0,3,0 FROM dual
)
SELECT Other_columns, 'Yearly' AS output  FROM da WHERE liqn_years > 0
UNION ALL
SELECT Other_columns, 'Monthly' AS output  FROM da WHERE liqn_years > 0
UNION ALL
SELECT Other_columns, 'quaterly' AS output  FROM da WHERE liqn_years > 0

Результат

OTHER_COLUMNS|OUTPUT  |
-------------|--------|
Other_colums |Yearly  |
Other_colums |Monthly |
Other_colums |quaterly|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...