Получать только строки на основе флага для выходных / дня недели / для обоих - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть целая куча тарифов, некоторые работают по выходным, некоторые работают по будням, некоторые по обоим. Иногда я буду запрашивать СЕЙЧАС (), но иногда я буду запрашивать столбец datetime.

id   | Weekday | Weekend | Price
 1   | 1       | 0       | 0.04   
 2   | 0       | 1       | 0.02          

date
2020-04-15 00:00:00
2012-04-16 00:00:00

date взят из другой таблицы и не связан с ценой / днями неделю.

Я знаю, что могу получить выходные date с

SELECT * FROM tariff where EXTRACT(ISODOW FROM date) IN (6,7)

, однако я не могу думать о том, как я получу строки, которые являются либо выходными / будними днями, либо и тем, и другим. с учетом даты.

** edit **

Обновлены таблицы для отображения отдельных дат. Я пытаюсь получить тариф, соответствующий дате в этой таблице, будь то будний день или выходные (или оба, но я могу экстраполировать это).

Выходные 1 Тариф, который используется для выходных, будних дней 1, все дни оба.

1 Ответ

0 голосов
/ 16 апреля 2020

Не могу дать вам запрос, предоставить что-либо для запроса. Мы также не можем быть уверены, что столбцы «Будний день» и «Выходной» означают то, что вы нам не сказали. Но если мы возьмем их в качестве логического индикатора, где 1 означает желаемое, может вам подойдет что-то подобное.

    select ...
      from ...
     where ...
       and (   (weekday = 1 and weekend =1) 
            or (weekday = 1 and extract(isodow from date) not in (6,7))
            or (weekend = 1 and extract(isodow from date)    in (6,7)) 
           ) ;
...