2015-07-24 3 views
1

Теперь я работаю над заданием, и я нахожусь на своем пути. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно иметь несколько столбцов из таблицы в одном параметре, чтобы вывести отчет на основе инициалов человека. Это то, что у меня есть.несколько столбцов в одном параметре

WHERE (tblWarehouse.Employee + tblWarehouse.Employee2 +tblWarehouse.Employee3 = 
    CASE 
     WHEN ISNULL(@Employee, 'ALL') = 'ALL' THEN 
     tblWarehouse.Employee + tblWarehouse.Employee2 + tblWarehouse.Employee3 
    ELSE @Employee 
    END) 

когда я запускаю запрос, он извлекает информацию, когда я ввожу сотрудник инициалы, которые были введены в столбцах один и два. Тем не менее, он ничего не вытаскивает из третьего столбца. Есть ли другой способ, который можно сделать для получения этой информации? Thnak вы так много заранее.

+0

Я полагаю, что только одна из трех колонок когда-либо заселена? – MatBailie

ответ

2

I думаю что вы пытаетесь это сделать?

WHERE 
     'ALL'     = @Employee 
    OR tblWarehouse.Employee = @Employee 
    OR tblWarehouse.Employee2 = @Employee 
    OR tblWarehouse.Employee3 = @Employee 

Просто имейте в виду, что это не сможет использовать один индекс для поиска ваших результатов. Рациональный давно наматывается, но могут быть следующие более производительным ...

SELECT 
    blah 
FROM 
(
    SELECT * FROM tblWarehouse WHERE 'All'  = @employee 
    UNION ALL 
    SELECT * FROM tblWarehouse WHERE Employee = @employee 
    UNION ALL 
    SELECT * FROM tblWarehouse WHERE Employee2 = @employee 
    UNION ALL 
    SELECT * FROM tblWarehouse WHERE Employee3 = @employee 
) 
    AS tblWarehouse 
INNER JOIN 
    whatever 
... 

это может использовать различные индексы для каждого из UNIONed запросов, избегая того, чтобы сканировать всю таблицу каждый раз, и вместо того, чтобы просто использовать быстрый поиск через индексы.

+0

Большое спасибо! видя, что вы объяснили, я попробовал другой метод, и я получил его работу! Пожалуйста, наслаждайтесь своими выходными и получите отличный день! – VCampos

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