У меня есть вопрос: как правильно использовать оператор CASE в предложении ON JOIN? (Я видел, что пара подобных вопросов задавалась другими, но я не вижу, как реплицировать решения в моем сценарии.)
Я пытаюсь соединить 2 экземпляра одной таблицы (самостоятельное объединение) , Таблица содержит значение баланса каждого клиента для каждого дня (строка на клиента в день, каждый клиент появляется несколько раз - с первого дня своей деятельности и до закрытия счета)
![enter image description here](https://i.stack.imgur.com/6n2O1.png)
Для каждого клиента мне нужно найти баланс на сегодня и в другом столбце - каков баланс на «базовую дату». По умолчанию для базовой даты используется значение 31 -de c -2019 НО , если клиент приходит из определенной c ветви (ФИЛИАЛ "X"), тогда базовая дата должна быть 31 марта. 2020 (вместо 31-го c -2019). Поэтому я пытаюсь написать что-то вроде этого:
select
B.branch_name,
B.customer_id,
B.balance as current_balance,
B1.balance as base_date_balance,
from
balance B inner join balance B1
on B.customer_id=B1.customer_id
and B.date = '20apr2020'
and B1.date= (case when B.branch_name = 'X' then '31-mar-2020' else '31-dec-2019' end)
Я понимаю, что это неправильный способ сделать это, но я не могу понять, каков правильный путь. , Заранее спасибо за все ответы и помощь, высоко ценю! :)