2013-07-22 3 views
0

У меня есть набор данных (с использованием SQL Server Management Studio), который используется для анализа продаж. В этом примере, когда агент выполняет аудит Sales Call или Account Review, они перечисляют (с помощью раскрывающегося списка) те темы, которые они обсуждали в вызове/просмотре. Тогда есть соответствующий столбец продуктов, которые клиент купил после факта (в этом примере я использую автомобили). Я думаю, может быть, дело заявление так сделать, но в esscence мне нужно выяснить, если какой-либо из лиц, принимающих человек, предложенных существует в колонке продуктов:Дело с текстовым поиском

enter image description here

Таким образом, в этом примере, в линии 1, они предложили Mazda и Toyota (отдельно от «;»), и Mazda появляется в линейке продуктов, чтобы затем была отмечена как эффективная. Строка 3, они предложили Honda, но человек попал в джип, так что это не эффективно. Так далее и тому подобное.

Я бы хотел, чтобы это было динамично (возможно, СУЩЕСТВУЕТ ??), так что мне не нужно писать/поддерживать что-то вроде «Эффективно» = CASE КОГДА Тема, например «% Mazada%» и «Продукты, % Mazada% ', "Yes", "No" 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

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