2015-08-06 3 views
0

Я любезно новичок в Sql. У меня есть две таблицы, и мне нужно, чтобы получить данные из второй таблицы, если условие основано на поле в первой таблице не так, как показано ниже:Выберите заявление, если условие не соответствует в Sql

первой таблице

(SELECT branch, division, position_code, emp_code, 
div_brand, div_brand_targets_t2 
FROM sas_provBrand_targets 
) TRGT 

Тогда мне нужно сделать Select из второй таблицы на основе значения TRGT.div_brand как следующие:

IF TRGT.div_brand IN ('Other', 'HPC1', 'HPC2') 
THEN 
{ 
Brand = null 
Category = null 
Subcategory = null 
} 
ELSE 
{ 
(SELECT DISTINCT BRAND, REP_BRAND, category, rep_category, 
    sub_category, SUB_CATEGORY_DESCRIPTION 
    FROM masterdata.dbo.inventory_item 
    WHERE sub_category = TRGT.div_brand 
) BRNDNAME 
} 

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

SELECT DISTINCT TRGT.branch BRANCH, TRGT.division DIVISION, TRGT.POSITION_CODE POSITION, 
TRGT.emp_code SALESMAN, BRNDNAME.brand + ' - ' + BRNDNAME.rep_brand BRAND, BRNDNAME.category + ' - ' + BRNDNAME.rep_category CATEGORY, BRNDNAME.sub_category + ' - ' + BRNDNAME.SUB_CATEGORY_DESCRIPTION SUBCATEGORY, TRGT.div_brand_targets_t2 BRANDT2 

Таблицы Структура (Обратите внимание, что они ООН-реляционных таблиц) sas_provBrand_targets Таблица

yr: numeric(4, 0) 
mnth: numeric(2, 0) 
branch: char(4) 
division: char(4) 
position_code: numeric(3, 0) 
emp_code: char(5) 
div_brand: varchar(25) 
div_brand_targets_t2: numeric(15, 2) 

masterdata.dbo.inventory_item

division: char(6) 
brand: char(5) 
rep_brand: varchar(40) 
category: char(6) 
rep_category: varchar(40) 
sub_category: char(8) 
SUB_CATEGORY_DESCRIPTION: varchar(20) 
+3

Что такое СУБД? (SQL Server, MySql, Oracle) –

+0

Просьба представить структуру из двух таблиц. Нет такой конструкции SQL, как 'IF TRGT.div_brand IN ('Other', 'HPC1', 'HPC2')'. Вы должны выбрать строку, заданную в переменной, а затем выполнить проверку с помощью 'IF'. –

+0

@ Богдан Богданов. Теперь мне нужно использовать «Дело». Но я просто использую «IF», ​​чтобы объяснить логику, которую мне нужно достичь. Я также предоставил таблицы –

ответ

0

Во-первых, когда речь идет о SQL думаю теория множеств не грести по строке ops. Трюк к достижению набора результатов, который вы хотите, - это присоединиться ко всему.

SELECT CASE WHEN TRGT.div_brand IN ('Other', 'HPC1', 'HPC2') THEN NULL ELSE BRNDNAME.BRAND END AS BRAND 
FROM sas_provBrand_targets TRGT 

LEFT/INNER>?? JOIN 
(SELECT DISTINCT BRAND, REP_BRAND, category, rep_category, 
    sub_category, SUB_CATEGORY_DESCRIPTION 
    FROM masterdata.dbo.inventory_item 
    WHERE 
) BRNDNAME ON sub_category = TRGT.div_brand 

повторяет саз для каждого из столбцов и добавить ваши требуемые столбцов/форматирование в основном выберите