如何在主表的字符串字段中搜索子查询字符串的实例 - teradata?

时间:2018-06-10 04:53:01

标签: sql subquery teradata

我有一个主表(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

我想知道MT的哪些顾客购买了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%')

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为in更简单:

select mt.*
from MT 
where MT.Wine_Variety in (select top 5 stt.variety
                          from some_transaction_table
                          where stt.variety is not null and stt.variety <> ''
                          group by stt.variety
                          order by sum(stt.quantity) desc
                         );