У меня есть главная таблица (MT), которая содержит поле с именем Wine_Variety.Это заполнено данными, которые выглядят следующим образом ...
CUSTOMER_NUMBER|WINE_VARIETY
1001|SHIRAZ
1002|CHARDONNAY,MERLOT
1003|MERLOT,CHARDONNAY,MALBEC
1004|MALBEC,RIESLING
Я разработал подзапрос (SQ), который возвращает значения для пяти лучших продаваемых вин, извлеченные из таблицы транзакций.В основном получается список, который выглядит следующим образом:
VARIETY|QUANTITY
SHIRAZ|10000
CABERNET SAUVIGNON|9500
CABERNET MALBEC|8000
CHARDONNAY|7000
CHAMPAGNE|6000
Я хочу выяснить, какие клиенты в МТ купили вина, которые появляются в SQ.
Глядя на приведенные выше списки, я ожидал бызапрос на возврат клиентов 1001 - 1003 включительно, но не клиента 1004, который не покупал вина в первой пятерке.
Я думал, что следующий шаг достигнет этого, но он получит 0 строк
sel * from MT
where MT.Wine_Variety like any
(
sel search_string from
(
sel top 5 variety, '''%'||variety||'%''' as search_string ,sum(quantity) as total_bought
from some_transaction_table
where variety is not null and variety <> ''
group by 1,2
order by 3 desc
) a
);
Все же это работает, если я попробую следующее ...
sel * from MT where MT.Wine_Variety like any ('%SHIRAZ%','%CHARDONNAY%')
Есть мысли?