2013-07-22 52 views
0

我有一個用於銷售分析的數據集(使用SQL Server Management Studio)。對於這個例子,當代理人填寫銷售電話或賬戶審覈時,他們列出(通過下拉式菜單)他們在電話/審覈中討論的主題。然後在客戶購買之後有一個相應的產品列(在這個例子中,我使用汽車)。我想,也許一個case語句是做的方式,但在esscence我需要找出是否有任何人建議廠商在產品列中存在:帶有文本搜索的案例聲明

enter image description here

所以在這個例子中,第1行,他們建議馬自達和豐田(由「;」分隔),馬自達出現在產品系列中,以便將其標記爲有效。 3號線,他們建議本田,但最終得到一輛吉普車,所以沒有效果。等等等等。

我希望它是動態的(也許是一個EXISTS ??)這樣我就不必寫/維護像''%'Mazada%'這樣的主題和像' %Mazada%',「是」,「否」WHEN .....

想法?

回答

0

如果你有一個Product表,那麼你也許可以逃脫這樣的:

select RowId, Topic, Products, 
     (case when exists (select 1 
          from Products p 
          where t.Topic like '%'+p.brand+'%' and 
           t.Products like '%'+p.brand+'%' 
         ) 
      then 'Yes' else 'No' 
     end) as Effective 
from t; 

這是基於一個事實,即「品牌」似乎在兩個topic被提及和products字段。如果你沒有這樣的表,你可以這樣做:

with products as (
     select 'Mercedes' as brand union all 
     select 'Mazda' union all 
     select 'Toyota' . . . 
    ) 
select RowId, Topic, Products, 
     (case when exists (select 1 
          from Products p 
          where t.Topic like '%'+p.brand+'%' and 
           t.Products like '%'+p.brand+'%' 
         ) 
      then 'Yes' else 'No' 
     end) as Effective 
from t; 

然而,這可能無法工作,因爲在現實世界中,文字更加複雜。它有拼寫錯誤,縮寫和同義詞。無法保證兩個列表中都有匹配的單詞,依此類推。但是,如果你的文字夠乾淨,這種方法可能會有所幫助。

+0

我沒有產品表,它只是一列。所有的數據都來自下拉菜單和/或自動聚合,所以拼寫確實不成問題。 – Joshua