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

Откуда:
Сообщений: 329
Есть таблица, в которой лежат значения параметров различных объектов:
create table table
{
[ObjectID] varchar(100),
[Param] varchar(50),
[Value] varchar(100)
}


1   USB    да
1   USB_   2.0
2   USB    да
2   USB_   2.0
3   USB    да
4   USB    да
4   USB_   3.0


Нужно обновить записи параметра USB, заменив его значение на соответствущее значение параметра USB_. Затем USB_ удалить.
Должно быть так
1   USB   2.0
2   USB   2.0
3   USB   да
4   USB   3.0
4 июн 14, 18:05    [16121511]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
PaNik
Member

Откуда: Москва
Сообщений: 1143
=Сергей=,

а может сначала удалить а потом обновить?

DECLARE @t TABLE ([ObjectID] varchar(100),
[Param] varchar(50),
[Value] varchar(100))

INSERT INTO @t (ObjectID,[Param],[Value])
VALUES
	('1',   'USB',    'да')
	, ('1',   'USB_',    '2.0')
	, ('2',   'USB',    'да')
	, ('2',   'USB_',    '2.0')
	, ('3',   'USB',    'да')
	, ('4',   'USB',    'да')
	, ('4',   'USB_',    '3.0')

SELECT * FROM @t

DELETE FROM t1 
FROM 
	@t t1
	INNER JOIN @t t2 ON t1.ObjectID = t2.ObjectID AND t1.[Param] + '_' = t2.[Param]   		
	
UPDATE @t SET Param = LEFT([Param], LEN([Param]) - 1) WHERE RIGHT([Param], 1) = '_'
	
SELECT * FROM @t	
4 июн 14, 18:27    [16121672]     Ответить | Цитировать Сообщить модератору
 Re: Помогите со скриптом  [new]
BuKTaP
Member

Откуда:
Сообщений: 132
ну или как просят всё-таки...
DECLARE @t TABLE ([ObjectID] varchar(100),
[Param] varchar(50),
[Value] varchar(100))

INSERT INTO @t (ObjectID,[Param],[Value])
VALUES
	('1',   'USB',    'да')
	, ('1',   'USB_',    '2.0')
	, ('2',   'USB',    'да')
	, ('2',   'USB_',    '2.0')
	, ('3',   'USB',    'да')
	, ('4',   'USB',    'да')
	, ('4',   'USB_',    '3.0')

SELECT * FROM @t

UPDATE t1
SET	t1.[Value] = t.[Value]
FROM @t t
JOIN @t t1 ON t.Param = 'USB_' AND t.ObjectID = t1.ObjectID

DELETE FROM @t
WHERE Param = 'USB_'

SELECT * FROM @t
4 июн 14, 18:37    [16121740]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить