2016-03-10 6 views
0

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

Version| CompanyNumber|EffDate |ExpDate |Indicator 
------------------------------------------------------ 
1  |  2  |xx/xx/xxxx|xx/xx/xxxx| 0 
2  |  2  |xx/xx/xxxx|xx/xx/xxxx| 1 

Новая таблица имеет структуру этого и должна быть заполнена следующим образом:

ID | Version | Form 
--------------------- 
1 | 1  | 1 
2 | 1  | 2 
3 | 1  | 3 
4 | 2  | 3 

То, что я борюсь с заполняемых новую таблицу с данные в приведенном выше примере. Если индикатор равен 0, я всегда заполняю форму 1, 2 и 3 для версии.

Так, если индикатор 0 Я хочу добавить форму 1, 2 и 3 для каждой версии, и если индикатор 1 Я только хочу, чтобы добавить Форму 3.

Заранее спасибо

+1

Судя по вашим данным ... если вы просто присоединитесь к версии, вы получите то, что хотите, но у вас всегда будет форма 1,2,3 в новой таблице, если индикатор равен 0? – Veljko89

+0

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

+0

ohhhhh ... Я понял это сейчас ... просто выберите версию и индикатор один за другим и перейдите с инструкцией IF. Вы получите эту вставку – Veljko89

ответ

2

Вы можно использовать запрос, как это выполнить INSERT:

INSERT INTO Table2(Version, Form) 
SELECT Version, x.v 
FROM Table1 
INNER JOIN (VALUES (1, 3), (2, 2), (3, 1)) AS x(i, v) 
ON IIF(Table1.Indicator = 0, 3, Table1.Indicator) >= x.i 

Если Indicator равно 0, затем 3 строки вставляются, в противном случае только одна строка вставляется.

Примечание: Я полагаю, что поле ID из Table2 является IDENTITY поле.

+0

Будет ли она работать, если индикатор немного столбца? –

+0

@ ZoharPeled Да, это сработает. В запросе была ошибка. Починил это. –

+0

IIF - это только функция SQL Server 2012, если бы у вас был equivilant в 2008 году? –

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