|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.03.2019, 19:15 | #1 |
Пользователь
Регистрация: 26.10.2011
Сообщений: 67
|
Оператор With. Как сохранить результат.
Всем привет.
В нете мало инфы об операторе with. А именно не нашла ничего о том можно ли сохранить результат оператора во временную таблицу или использовать с join. Надеюсь, что вы растолкуете мне эти моменты. Привожу пример, как я пыталась сделать, но получаю ошибку выполнения запроса. select t.proj_id, uvn.udf_text NUM, uvc.udf_text Constructive, r.rsrc_short_name FO_RSRC_NAME, tr.target_qty, tr.remain_qty, tr.act_reg_qty act_qty, t.task_code, t.task_id, ac.acct_name,r.rsrc_type,rcat.rsrc_ catg_short_name,ta.bloc_id,ta.bloc_ name from privuser.TASK t join privuser.TASKRSRC tr on tr.task_id = t.task_id join privuser.RSRC r on r.rsrc_id = tr.rsrc_id join privuser.UDFVALUE uvn on uvn.udf_type_id = 1000001 and uvn.fk_id = t.task_id join privuser.UDFVALUE uvc on uvc.udf_type_id = 1000000 and uvc.fk_id = t.task_id left join ( with a_cte (actv_code_id, parent_actv_code_id, short_name, actv_code_name) as ( --якорь рекурсии select ac.actv_code_id, ac.parent_actv_code_id, ac.short_name short_name, ac.actv_code_name from privuser.ACTVTYPE at join privuser.ACTVCODE ac on ac.actv_code_type_id = at.actv_code_type_id where at.actv_code_type = 'Блок' and ac.parent_actv_code_id is null union all select ac.actv_code_id, ac.parent_actv_code_id, a.short_name || '.' || ac.short_name short_name, ac.actv_code_name from privuser.ACTVCODE ac join a_cte a on a.actv_code_id = ac.parent_actv_code_id ) select ta.task_id , a_cte.short_name bloc_id, a_cte.actv_code_name bloc_name from privuser.TASKACTV ta join a_cte on ta.actv_code_id = a_cte.actv_code_id where ta.proj_id in (4440)) on a_cte.task_id = t.task_id left join privuser.ACCOUNT ac on ac.acct_id = tr.acct_id left join ( select rcv.rsrc_catg_short_name, rcat.rsrc_id, rct.rsrc_catg_type from privuser.rcattype rct join privuser.rcatval rcv on rcv.rsrc_catg_type_id = rct.rsrc_catg_type_id join privuser.rsrcrcat rcat on rcat.rsrc_catg_id = rcv.rsrc_catg_id where rct.rsrc_catg_type = 'Физобъем' ) rcat on rcat.rsrc_id = tr.rsrc_id where t.proj_id in ('2685') and r.rsrc_type in ('RT_Mat', 'RT_Labor') |
24.03.2019, 19:20 | #2 |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,389
|
Производные таблицы - вот здесь всё нормально примером https://metanit.com/sql/sqlserver/10.4.php
E_MAIL: rijgvina7@yahoo.com
|
24.03.2019, 19:39 | #3 | |
Пользователь
Регистрация: 26.10.2011
Сообщений: 67
|
Цитата:
Делала так, но запрос завершается ошибкой Код:
|
|
24.03.2019, 20:09 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.03.2019, 20:17 | #5 |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,389
|
Но вот так
Код:
Код:
Код:
E_MAIL: rijgvina7@yahoo.com
Последний раз редактировалось xxbesoxx; 24.03.2019 в 20:23. |
24.03.2019, 20:31 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
чем insert во временную лучше select into? Для insert-а нужно создать таблицу предварительно, для select-а не надо. Если нужен индекс создай после, по времени без разницы, даже быстрей будет, чем при индексе созданном до заполнения
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.03.2019, 23:30 | #7 | |
Пользователь
Регистрация: 26.10.2011
Сообщений: 67
|
Цитата:
Я пробовала сделать, как вы описали. Но запрос вернулся с ошибкой, что ожидался select. Т.к. сразу после WITH MyTab AS ( -- Мои запрос select OrderID, ShipName from Orders where EmployeeID=5 ) Должен следовать Select * from MyTab |
|
25.03.2019, 15:34 | #8 |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,389
|
Смотрите...
1) Это локальную временную таблицу с именем #TabName .! Которая будет удалена, как только вы отключитесь. Если вы создаете глобальную временную таблицу ##TabName, любой пользователь в базе данных может работать с этой таблицей Код:
Код:
E_MAIL: rijgvina7@yahoo.com
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сохранить ответы (сохранить результат игры) и не срабатывает рандом в вопросах | geto | C++ Builder | 0 | 03.05.2017 18:28 |
Сохранить результат DragAndDrop визуальных компонентов (Delphi 6) | hudrogen | Общие вопросы Delphi | 9 | 11.02.2016 17:59 |
Как сохранить результат команды ipconfig в текстовый файл ? | adaptive person | Общие вопросы Delphi | 3 | 31.03.2012 23:03 |
Необычный оператор присвания и результат | Стремящийся | Общие вопросы C/C++ | 14 | 29.02.2012 19:04 |
Повернуть изображение и сохранить результат | new player | Мультимедиа в Delphi | 2 | 03.11.2011 12:57 |