Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Nechto Member Откуда: Сообщений: 829 |
Здравствуйте. Подскажите пожалуйста что здесь не так? UPDATE [dbo].[TEMP] SET PIPE_ID = IsNULL(F.PIPE_ID, (select max(PIPE_ID)+1 from [TestDB].[dbo].[TEMP])) FROM [dbo].[TEMP] INNER JOIN [dbo].[TEMP] F ON ((F.NAME = 'KUST' OR F.NAME2 = 'KUST') OR (F.NAME = 'N1' OR F.NAME2 = 'N1')) AND F.SERV_ID = 1 AND F.Diam = 20 AND [dbo].[TEMP].MSLINK = F.MSLINK Почему то ещу не нравится этот скрипт (select max(PIPE_ID)+1 from [TestDB].[dbo].[TEMP]), если написать вместо этого скрипта к примеру 101, то запрос отлично обновляет. А так кричит
К сообщению приложен файл. Размер - 13Kb |
||
28 май 14, 14:47 [16085703] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
И что непонятного в сообщении ? |
||||
28 май 14, 14:49 [16085722] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
Блин, что то я гоню. Вопрос закрываю. |
28 май 14, 15:00 [16085807] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
Чтобы не плодить темы, продолжу в этой. Попробую сначала объяснить что я хочу сделать. По сути задача заключается в заполнение поля PIPE_ID значениями группирующие группу строк исходя от условия. На картинке, сверху имеется запрос, в котором как раз выполняется выборка и update массива строк удовлетворяющего условию. В общем на картинке снизу имеется таблица, которая показывает данные которые подтянутся в INNER JOIN исходя из условия. В данной таблице имеется одно нулевое PIPE_ID, которое после выполнения запроса заполниться значением "2", а мне надо чтобы оно заполнилось "1" поскольку эта запись по подает в группу с двумя записями. Как это можно сделать в этом же запросе. К сообщению приложен файл. Размер - 26Kb |
28 май 14, 18:25 [16087443] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Рекомендации по формлению сообщений п.4 и п.6 |
||
28 май 14, 18:28 [16087456] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
Nechto, попробуйте еще такой вариант 16080129 |
28 май 14, 21:24 [16088206] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
WITH то что надо. Только вот не пойму почему переменная объявленная в WITH Q, доступна только в одном запросе, а в следующем уже кричит ошибку "Недопустимое имя объекта "Q"" WITH Q AS (ЗАПРОС) -- Здесь объект Q доступен UPDATE таблица ... FORM Q -- Уже не доступен SELECT * FROM Q |
29 май 14, 13:33 [16091072] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что это не переменная |
||
29 май 14, 13:34 [16091083] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
Nechto, это часть UPDATEа! |
29 май 14, 13:35 [16091104] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
А альтернатива какая нибудь есть? |
29 май 14, 13:41 [16091175] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Альтернатива чему ? Хочу один раз написать текст запроса, а его результат использовать где-угодно ? |
||
29 май 14, 13:44 [16091216] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
Ну да, только без использования курсора |
29 май 14, 13:48 [16091257] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Запрос, текст которого хранится на сервере и доступен для запросов, называется представлением/view-ом |
||
29 май 14, 13:53 [16091295] Ответить | Цитировать Сообщить модератору |
user89 Member Откуда: Сообщений: 2083 |
Nechto, показываю ![]() К сообщению приложен файл. Размер - 19Kb |
29 май 14, 13:54 [16091303] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
Товарищ user89 Данный пример я уже рассмотрел, прочтите несколько постов выше. VIEW не подойдёт постольку WITH Q AS (ЗАПРОС)Имеет входящие параметры. |
29 май 14, 15:51 [16092311] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
А что такое "входящие параметры" ? Еще один "самодельный" термин ? |
||
29 май 14, 15:53 [16092330] Ответить | Цитировать Сообщить модератору |
Nechto Member Откуда: Сообщений: 829 |
Вроде того :)WITH Q AS (select * FROM table where id = @IDs) |
29 май 14, 16:20 [16092629] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
И откуда же в переменную @IDs попадет значение ? |
||
29 май 14, 16:21 [16092638] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |