powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Отбор строк по условию, что другое поле одновременно содержит необходимые условия
4 сообщений из 4, страница 1 из 1
Отбор строк по условию, что другое поле одновременно содержит необходимые условия
    #40107379
Jonny_Bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Не знаю даже как через поисковик коротко сформулировать вопрос, поэтому вынужденно создаю тему.
MsSQL 14.0
Допустим есть таблица типа:

Название компании/ Год подачи заявки на кредит
Ромашка/ 2020
Ромашка/ 2019
Ромашка/ 2021
Березка / 2019
Березка / 2020


Нужно выбрать только названия компаний, которые подавали заявки на кредит в каждом из годов в диапазоне 2019-2021 (т.е. в примере выше этому критерию соответствует только Ромашка).
Мои идеи как это решить пока довольно длинные по написанию и долгие:
1. Через FOR XML PATH сначала сконкатенатить в одной строке все годы (предварительно их отсортировав по ASC), и затем отфильтровать по этому полю, что оно равно «201920202021».
2. Cделать дополнительное поле с проверкой через кучу EXISTS (в оригинале нужна проверка не за 3 года, а за 15. Поэтому по идее будет считаться довольно долго на выборке из 300-400 тыс. строк), типа:
‘Признак соответствия’=
CASE WHEN
EXISTS(SELECT [Название компании] FROM Baza b1 WHERE b1.[Название компании]=Main.[Название компании] AND b1.[год заявки]=2019)
AND EXISTS(SELECT [Название компании] FROM Baza b1 WHERE b1.[Название компании]=Main.[Название компании] AND b1.[год заявки]=2020)
AND EXISTS(SELECT [Название компании] FROM Baza b1 WHERE b1.[Название компании]=Main.[Название компании] AND b1.[год заявки]=2021)
TEHN ‘Соответствует’ ELSE ‘Не соответствует’ END

Какие есть более адекватные варианты по быстродействию и объему кода запроса?
...
Рейтинг: 0 / 0
Отбор строк по условию, что другое поле одновременно содержит необходимые условия
    #40107383
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny_Bob,

Перед вашими манипуляциями
Код: sql
1.
Select Distinct [Название компании], [Год подачи заявки]

не предлагать? Там кстати потом и Count можно использовать по названию компании
...
Рейтинг: 0 / 0
Отбор строк по условию, что другое поле одновременно содержит необходимые условия
    #40107388
Jonny_Bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, все понял кажется :)
Выгружаем DISTINCT компании и годы подачи заявки, потом используем это как подзапрос для FROM (или как CTE), и говорим что выдай все компании, WHERE COUNT(DISTINCT [год подачи заявки])=3.

Такая идея?
...
Рейтинг: 0 / 0
Отбор строк по условию, что другое поле одновременно содержит необходимые условия
    #40107395
Jonny_Bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jonny_Bob
Спасибо, все понял кажется :)
Выгружаем DISTINCT компании и годы подачи заявки, потом используем это как подзапрос для FROM (или как CTE), и говорим что выдай все компании, WHERE COUNT(DISTINCT [год подачи заявки])=3.

Такая идея?


Ну точнее отдельное поле с COUNT(DISTINCT [год подачи заявки]), и потом HAVING COUNT(DISTINCT [год подачи заявки])=3
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Отбор строк по условию, что другое поле одновременно содержит необходимые условия
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]