Как сопоставить все строки в одном столбце - PullRequest
0 голосов
/ 03 мая 2018

У меня есть эта таблица

Availabilty

---------------------------------------------------------------
id|    date    |count
---------------------------------------------------------------
1 | 15-05-2018 |1
2 | 15-05-2019 |1
3 | 15-05-2020 |1
4 | 15-05-2021 |1

Я хочу получить все записи счета, если и только если они существуют во все даты, которые я прохожу, например. если я прошел дни 15-05-2018 и 15-05-2019, я получу эти цифры если я прошел дни 15-05-2018 и 14-05-2018, он ничего не должен возвращать

Я пытался написать запрос, например

select Availabilty.count from Availabilty where Availabilty.date between ? and ? 

но это вернет запись, даже если она существует один раз, когда мне нужно сопоставить все дни. Как я могу достичь этого

Надеюсь, вы хорошо поняли мой вопрос.

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете подсчитать количество подходящих записей и сравнить с количеством дат в периоде. При условии отсутствия дубликатов:

select a.count
from Availabilty a
where a.date between ? and ? and
      (select count(*)
       from Availability a2
       where a2.date between ? and ?
      ) = datediff(?, ?) + 1;

Хм. В вашей проблеме вы не должны использовать between. Я думаю, что вы хотите:

select a.count
from Availabilty a
where a.date in (<list>) and
      (select count(*)
       from Availability a2
       where a2.date a.date in (<list>)
      ) = <n>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...