Database Flavor: PostgreSQL 9.5Выберите даты из таблицы на основе диапазона дат другой таблицы
Я пытаюсь получить мою голову вокруг получения даты в table1, которые находятся в диапазоне дат дат т.е. debtors.debt_date
поля между (-3 и + 4 дней с указанной даты в debtors.debt_date
поле)
запроса 1 дает мне:
ERROR: more than one row returned by a subquery used as an expression (which is no surprise)
select table1.sale_date
from sales table1 where
table1.sale_date between
(select debt_date::date -3 from debtors)
and (select debt_date::date +4 from debtors);
Запрос 2 возвращает ни одной строки (и я подумайте, где начальное, где статья ищет абсолютные значения)
select table1.sale_date
from sales table1 where
table1.sale_date in (
(select debt_date::date from debtors where debt_date between
debt_date::date - 3 and debt_date::date + 4);
Несвязанный, но: какой тип данных является 'debt_date'? почему вы бросаете это на свидание? –
@a_horse_with_no_name тип debt_date - это временная метка без часового пояса, и то, что я пытаюсь сделать, это вычесть 3 и добавить 4 дня от debtors.date_paid, так как меня интересуют даты из таблиц продаж, которые попадают в этот диапазон в таблице должников. – ribbit
Вероятно: '... from sales s join debtors d on (s.sale_date между d.debt_date - '3 day' :: interval и d.debt_date + '4 day' :: interval)'. К сожалению, это не так ясно, об именах таблиц/столбцов ... – Abelisto