2015-06-15 6 views
0

Я пытаюсь вставить несколько строк с разными данными на основе данных в другой таблице.SQL - Вставка данных на основе нескольких критериев

Сценарий:

У меня есть столбцы tbl1_action и tbl1_actiondate. Я хочу найти в tbl2 данные для tbl2_reviewdate и tbl2_destroydate. Если есть данные в tbl2_reviewdate, тогда мне нужны tbl1_action = 'review' и tbl1_actiondate = tbl2_reviewdate. Если есть данные в tbl2_destroydate мне нужно другой ряд tbl1_action = 'destroy' и tbl1_actiondate = tbl2_destroydate.

Таким образом, чтобы суммировать все возможные сценарии:

If tbl2_ReviewDate IS NULL AND 
    tbl2_DestroyDate IS NULL 

Вставьте одну запись в tbl1 с действием и actiondate = NULL

tbl2_ReviewDate IS NOT NULL AND 
    tbl2_DestroyDate IS NULL 
Insert one row with tbl1_action = 'Review' and tbl1_actiondate = tbl2_reviewdate 

    tbl2_ IS NULL AND 
    tbl2_DestroyDate IS NOT NULL 
Insert one row with tbl1_action = 'Destroy' and tbl1_actiondate = tbl2_destroydate 

    tbl2_ReviewDate IS NOT NULL AND 
    tbl2_DestroyDate IS NOT NULL 
Insert two rows; One with tbl1_action = 'Destroy' and tbl1_actiondate = tbl2_destroydate and one with tbl1_action = 'Review' and tbl1_actiondate = tbl2_reviewdate. 

Возможно ли это сделать в одном скрипте? Каков наилучший способ сделать это?

Благодаря вашей помощи

ответ

0

Я думаю, что вы хотите что-то вроде этого:

insert into table1(action, date) 
    select 'Review', ActionDate 
    from tbl2 
    where tbl2.ReviewDate IS NOT NULL 
    union all 
    select 'Destroy', DestroyDate 
    from tbl2 
    where tbl2.DestroyDate IS NOT NULL; 

Вы также можете сделать это как два отдельных insert заявления.

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