2016-09-30 4 views
0

Предположим, у меня есть таблица вродеКолонны перекрестков

ID  PROD  UNIT 
1 | 100 | X 
2 | 100 | Y 
3 | 100 | Z 
4 | 200 | X 
5 | 200 | Y 
6 | 300 | Y 
7 | 300 | Z 

Я хочу, чтобы получить пересечение значений из столбца БЛОКА для каждого кода из столбца PROD, с помощью запроса SQL. Количество продуктов в таблице является переменным, но мне нужно пересечь UNIT для всех продуктов. Для моего примера, таблица результатов будет таблица с одной строки, так как все продукты из PROD имеют только одну единицу общего:

PROD UNIT 
300  Y 
+0

Вы вообще что-то пробовали? Что вы нашли, чтобы не работать? – dfundako

+0

@dfundako Я пробовал некоторые выборки на основе count (*) ... но я понимаю, что использование count/grouping UNIT не поможет вообще в этой проблеме ... так что в данный момент я не знаю, откуда start – relysis

+0

Вы говорите, что ваш результирующий набор должен иметь только Y как UNIT, потому что он единственный, который имеет все PROD вместе. Но почему у вашего результата есть только один PROD? Какое требование будет стоить значение? –

ответ

1
SELECT MAX(PROD) as Prod, Unit 
FROM 
    TableName 
GROUP BY 
    Unit 
HAVING 
    COUNT(DISTINCT PROD) = (SELECT COUNT(DISTINCT PROD) FROM TableName) 

Вы должны быть в состоянии сравнить DISTINCT Count of Products grouped by Unit с DISTINCT Count of All Products in the table. Вы можете использовать дополнительный запрос в пункте HAVING, чтобы выполнить это.

Я предположил, что вы хотели получить Maximum PROD Id, исходя из вашего результата, если вы хотите что-то еще, если вы хотите, чтобы все записи просто использовали это как производную таблицу и присоединились назад, чтобы получить желаемые результаты.

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