Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Заполнить новую таблицу с заменой значений  [new]
Stalker16
Member

Откуда:
Сообщений: 6
Надо из одной таблицы заполнить вторую таблицы, попарными строками. Есть две однотипные таблицы table1, table2. В них столбы name и kolvo. Первая таблица заполнена значениями. Где первый столбец name. В немзначения, Любые символы длиной 6 знаков, но конец обязательно символ ‘1’. Например d1saf1. Второй столбец тоже значения, но не принципиально. Надо перенести все строки из таблички table1 в table2, при этом для каждой строки должна быть создана ещё такая же строка но с именем, которое будет оканчиваться на символ ‘2’. Пример:
name kolvo
a1aaa1 4
b1bbb1 6



name kolvo
a1aaa1 4
a1aaa2 4
b1bbb1 6
b1bbb2 6
Может посоветуете сделать попроще, а то таблицы очень большие ?

Я пробовал так. Сначала все переносил table2 с помощью
inset into table2 (name, kolvo)
Select name, kolvo
From table1.
(Получается появлялась таблица только со значениями оканчивающимися на ‘1’). Затем обновлял все эти значения и заменял их на конец ‘2’.

Update table2
Set name= STUFF (name, 6, 1, ‘2’)

Получается в таблицы появлялись все записи с концом 2. И сново заполнял таблицы значениями с концом ‘1’ из таблицы table1

inset into table2 (name, kolvo)
Select name, kolvo
From table1.
30 сен 19, 14:35    [21982743]     Ответить | Цитировать Сообщить модератору
 Re: Заполнить новую таблицу с заменой значений  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Stalker16,

SELECT a.n
FROM (
	VALUES	('baaaaab1'),
		('xxxx1')
) as a(n) 
UNION ALL 
SELECT SUBSTRING(a.n, 1, LEN(a.n) - 1) + '2'
FROM (
	VALUES	('baaaaab1'),
		('xxxx1')
) as a(n) 
30 сен 19, 14:46    [21982764]     Ответить | Цитировать Сообщить модератору
 Re: Заполнить новую таблицу с заменой значений  [new]
iiyama
Member

Откуда:
Сообщений: 642
Stalker16,

select 
	STUFF (T.name, 6, 1, CAST(N.n as char(1) )), T.kolvo	
from table1 T
	cross join (select number from master..spt_values NumTable where NumTable.type='P' and NumTable.number between 1 and 2)N(n)
30 сен 19, 14:58    [21982781]     Ответить | Цитировать Сообщить модератору
 Re: Заполнить новую таблицу с заменой значений  [new]
Stalker16
Member

Откуда:
Сообщений: 6
Спасибо, сейчас попробую
30 сен 19, 15:07    [21982798]     Ответить | Цитировать Сообщить модератору
 Re: Заполнить новую таблицу с заменой значений  [new]
iap
Member

Откуда: Москва
Сообщений: 46978
SELECT REVERSE(STUFF(REVERSE(T.name),1,1,C.N)) name, T.kolvo FROM table1 T CROSS JOIN(VALUES('1'),('2'))C(N);
30 сен 19, 15:18    [21982824]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить