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

Откуда: CCCP
Сообщений: 45
Есть таблица
CREATE TABLE #NewCnameTmp
(
SNum int not null,
GNum int not null,
CNum int not null,
BNum int not null,
State int not null,
BName NVARCHAR(128) null,
CBname NVARCHAR(128) null,
isValid int not null
primary key (SNum,GNum,CNum,BNum)
);
CBName получаю в результате конкатенации BNum
snum gnum bnum cnum state bname CBname
1004, 1, 100030, 101, 1, ПГУ 1 ПТ 3 , ПГУ 1 ПТ 3+ПГУ 1 ГТ 1
1004, 1, 100630, 101, 0, ПГУ 1 ГТ 1, ПГУ 1 ПТ 3+ПГУ 1 ГТ 1
1014 1, 100692, 101, 1, ПГУ 1 ГТ, ПГУ 1 ГТ+ПГУ 1 ПТ
1014 1, 100693, 101, 0, ПГУ 1 ПТ, ПГУ 1 ГТ+ПГУ 1 ПТ
1014 1, 100692, 102, 0 ПГУ 1 ГТ, ПГУ 1 ГТ+ПГУ 1 ПТ
1014, 1, 100693, 102, 1, ПГУ 1 ПТ, ПГУ 1 ГТ+ПГУ 1 ПТ

Нужно получить еще одну колонку CName на основе BName у которого state = 1 т.е. для обоих bnum для соответствующего snum
cname будет ПГУ 1 ПТ 3
snum gnum bnum cnum state bname CBname CName
1004, 1, 100030, 101, 1, ПГУ 1 ПТ 3, ПГУ 1 ПТ 3+ПГУ 1 ГТ 1, ПГУ 1 ПТ 3
1004, 1, 100630, 101, 0, ПГУ 1 ГТ 1, ПГУ 1 ПТ 3+ПГУ 1 ГТ 1, ПГУ 1 ПТ 3
22 сен 14, 18:18    [16606493]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с конкатенаций  [new]
_djХомяГ
Guest
Что то типа этого что ли?
22 сен 14, 18:39    [16606577]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с конкатенаций  [new]
oraserv
Member

Откуда: CCCP
Сообщений: 45
_djХомяГ,

нет что то типа

select snum, gnum, bnum, cnum, state, bname, CBname,
case when state = 0 then substring(CBname,1, len(CBName) - len(bname)-1) else bname end AS CName
from #NewCnameTmp

но это работает только для snum у которых по 2 BNum если 3 и больше то прокатывает
22 сен 14, 18:55    [16606619]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с конкатенаций  [new]
oraserv
Member

Откуда: CCCP
Сообщений: 45
oraserv
_djХомяГ,

нет что то типа

select snum, gnum, bnum, cnum, state, bname, CBname,
case when state = 0 then substring(CBname,1, len(CBName) - len(bname)-1) else bname end AS CName
from #NewCnameTmp

но это работает только для snum у которых по 2 BNum если 3 и больше то не прокатывает
22 сен 14, 18:56    [16606624]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить