2016-12-04 3 views
2

Давайте иметь таблицу «КОДЫ» с двумя столбцами: Код | Дата (КОДЫ (код, дата))Проверить значение, общее между строками

Я пытаюсь найти запрос на извлечение всех кодов DISTINCT, которые парятся хотя бы один раз (но может быть больше) с каждой отдельной датой.

Примеры:

AA00 имеет все возможные даты

AA00 has every possible date

код не имеет все даты

No code has all the dates

CC имеет все даты, AA больше не делает, как мы добавили 02/06/2016

CC has all the dates, AA no longer does as we added 02/06/2016

Могут быть коды без даты или даты без кода. Конечно, дата без кода, если она уникальна, означает, что выход будет пустым, так как ни один код не может иметь его, поэтому код не будет иметь всех дат.

Я пытался в течение нескольких часов, и я даже не приближаемся ....

Любая идея?

+0

Затем отправьте то, что вы пробовали вместе с данными образца и желаемым выходом – Rahul

+0

сгруппированы по дате? – McNets

+0

Я отправлю образцы данных как можно скорее, учитывая простую природу таблиц, которые я не думал, что это необходимо. Сгруппированные по дате или иным образом, мы просто хотим, чтобы все четкие коды были сопряжены со всеми доступными датами. – Athamas

ответ

1

Это будет искать коды, которые имеют общее количество уникальных дат в CODES, которое не ниже, чем общее количество уникальных дат в CODES.

select Code 
    from CODES 
    group by Code 
    having count(distinct Date) >= (
    select count(distinct Date) 
    from CODES 
    where Date is not null 
) 

Предложение HAVING является стандартом SQL, который может фильтровать агрегатную функцию (сумма, количество, средний, ...).

+0

Я ищу коды, которые соединены с каждой и любой доступной отдельной датой, по крайней мере один раз для каждого из них. – Athamas

+0

@Athamas изменил SQL. – LukStorms

+0

@Athamas. , , Это должно работать, если предположить, что ни один код не повторяет одну и ту же дату несколько раз. –

Смежные вопросы