|
|
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetTaPaK, Как использовать результат cte внутри другого cte? Не нашёл там. Пожалуйста, укажите литеру примера. Да хорош уже, какой пример когда там черным по белому вначале написано: A CTE can reference itself and previously defined CTEs in the same WITH clause. Forward referencing is not allowed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:28:29 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, Вы можете сылаться внутри СТЕ на другие СТЕ того же блока with как если бы это были внешние таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:34:56 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Cammomile, О! Первое конструктивное замечание. Спасибо! А теперь всё же если не затруднит, пример синтаксиса. Поскольку там такого примера нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:38:22 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetCammomile, О! Первое конструктивное замечание. Спасибо! А теперь всё же если не затруднит, пример синтаксиса. Поскольку там такого примера нет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:42:15 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Alexander Us, Спасибо! Это именно то что вчера сделал. То есть изначально искал несколько другое решение, но именно приведенный Вами синтаксис решил мою задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:42:16 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Cammomile, Спасибо. Видите как просто было помочь человеку. Сколько воды зря перемолотили здесь (не имею в виду именно Вас). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:49:26 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, может Вам это сейчас не надо, но так, просто для информации на будущее: есть ещё и другой тип применеия/построения CTP: рекурсивные CTP - для работы с иерархическими данными. Там изнутри CTP ссылаются на сам CTP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:59:57 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Alexander Us, Спасибо. Надо будет почитать повнимательней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:05:08 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
2 ALL Человек спросил про запятую, а его 50 постов ногами пинают... Грамматика SQL вещь сложная, что уж говорить о пунктуации... 2 TS Есть ещё удобная вещь - присоединение Outer Apply - не так давно, после 10 лет практики в SQL открыл для себя её заново. Когда нужно "добавить к этому одно поле (нацепить на каждую запись некое вычисление)" - это то, что доктор прописал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:29:20 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Шыфл, Спасибо. Впрочем, я не студент, на пинания не обижаюсь. От них только профит, ещё несколько раз проштудировал примеры в хелпе. Да, Outer Apply я использую, но в чистом виде оно мне было недостаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:37:40 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, а чего же в APPLY вам не хватило то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:44:18 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
TaPaK, Дак вроде уж Вам лично объяснил про схлопывание записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:59:15 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetTaPaK, Дак вроде уж Вам лично объяснил про схлопывание записей? вы не можете засунуть DISTINCT в OUTER APPLY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:08:24 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Дорогие специалисты MSSQL! Спасибо вам всем, ответившим в этой ветке. И помогавшим, и критиковавшим - спасибо. Благодаря вам новичок в MSSQL не только нашёл решение конкретной задачи, но и узнал много нового о CTE и вообще. Приходите ещё в мои ветки, у меня очевидно будет ещё много вопросов. Ифчо, задача решена ещё вчера, но если ещё кому надо "попинать студента", налетай, обслужу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:08:31 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
А я вот сижу, и думаю. Ежели я в инлайн функции объявил несколько ОТВ, притом, эти ОТВ, скажем так "справочники" (датасет детерменирован) Типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. И эту инлайн функцию я накидываю на какой-то селект, серва догадается, что эти ОТВ на каждую строку входного запроса вернут один и тот же датасет и закеширует, или как дурак будет делать рассчеты стопицот миллионов раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:17:13 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
TaPaK, С этого места, пожалуйста, поподробней. Где в этом коде вставлять дистинкт? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. А если выборка t включает размноженные строки с разными нумераторами rn, поскольку на каждый Ordname есть несколько WorkOrder's, а нарастающий итог надо посчитать по заказам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:30:50 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Cammomile, Просто написать инлайн функцию и надеяться, что она сама собой станет детерминированной, недостаточно. Как минимум надо объявить её SCHEMABINDING ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:33:02 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Cammomile авторИ эту инлайн функцию я накидываю на какой-то селект, серва догадается, что эти ОТВ на каждую строку входного запроса вернут один и тот же датасет и закеширует, или как дурак будет делать рассчеты стопицот миллионов раз? инлайн функция не вычисляетя "каждый раз", отдаёт план аналогичный обычному представлению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:54:36 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
TaPaK, Мне правда интересно насчёт DISTINCT в OUTER APPLY. Отпишитесь пожалуйста по моему примеру. 21004192 Может там правда можно было какой DISTINCT засунуть и код укоротить? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 16:20:07 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetМожет там правда можно было какой DISTINCT засунуть и код укоротить? А версия сервера у вас какая? А то и правда ваш код можно покороче переписать. Присутствие DISTINCT в коде, если это не для быстро посмотреть, какие вообще значения (сочетания) есть, - моветон. slovnetА если выборка t включает размноженные строки с разными нумераторами rn, поскольку на каждый Ordname есть несколько WorkOrder's, а нарастающий итог надо посчитать по заказам? *картинка WHAAT?!* Вы сами-то понимаете, чего вы хотите? "Рисуйте" в excel исходные данные и конечный результат. А гадать по вашим скриптам (которые вы кстати предоставили спустя 5 постов) наши местные телепаты устают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 16:30:43 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичslovnetМожет там правда можно было какой DISTINCT засунуть и код укоротить? А версия сервера у вас какая? А то и правда ваш код можно покороче переписать. Microsoft SQL Server 2008 R2 (SP2) - 10.50.4042.0 (X64) Mar 26 2015 21:18:04 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor) По Вашему же совету этот код и использовал в 2008. Руслан ДамировичПрисутствие DISTINCT в коде, если это не для быстро посмотреть, какие вообще значения (сочетания) есть, - моветон. Знаю. Как говориться, необходимо но недостаточно. Руслан ДамировичslovnetА если выборка t включает размноженные строки с разными нумераторами rn, поскольку на каждый Ordname есть несколько WorkOrder's, а нарастающий итог надо посчитать по заказам? *картинка WHAAT?!* Вы сами-то понимаете, чего вы хотите? "Рисуйте" в excel исходные данные и конечный результат. А гадать по вашим скриптам (которые вы кстати предоставили спустя 5 постов) наши местные телепаты устают. Я очень хорошо понимаю что хочу. И много раз здесь объяснял, включая исходный пост. У меня конечный результат уже "нарисован" в Results а не в excel . Гадать не надо, сразу объяснил. Могу ещё объяснить если вдруг надо. Скрипт, мной предоставленный - он не мой, а Ваш (с моими косметическими изменениями) предоставленный мне в посте 20989369 :) За что Вам ещё раз отдельное спасибо. Здесь же я его привёл просто для иллюстрации TaPaK о том что DISTINCT не поможет. P.S. Шож тут гуру такие нервные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 17:01:57 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Вот знаешь, товарищ, совет тебе на будущее. Чтобы местные гуру и не гуру были более дружелюбными, делай ЗАРАНЕЕ воспроизводимое репро. А не пиши словами свои хотелки. Все скуль задачи решаются на абстрактном уровне, очень редко решение зависит от физических данных. Поэтому если бы ты свой вопрос оформил бы в виде запускаемого куска кода, то и ответы получил бы быстрее, и желчи было бы заметно меньше. Посмотри пример нормально оформленного вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 17:13:49 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetИ много раз здесь объяснял, включая исходный пост. Скрипт, мной предоставленный - он не мой, а Ваш (с моими косметическими изменениями) предоставленный мне в посте У меня конечный результат уже "нарисован" в Results а не в excel Сопоставлять ваше имя и ваш вопрос с каким-то другим постом, в котором вам уже дали исчерпывающий ответ (да еще и я)? slovnetЯ очень хорошо понимаю что хочу. Не понимаете, или хотите совсем не того, что вываливаете в первом посте. Склоняюсь к тому, что вы просто хотите не думать, а получить ответ, ну или устали, потому что тема тяжелая. slovnetP.S. Шож тут гуру такие нервные...Так мы тоже не железные. То приходится таблички из картинок извлекать, то скрипты, то угадывать, что автор хотел/сказать, вытягивая из него информацию так, чтобы не обидеть. А теперь давайте сделаем ребут. Вы выложите данные еще раз. Еще раз нарисуете результат. И скрипт, который что-то там делает, но этого результата не дает. А уж мы постараемся помочь. Это конструктивнее, чем выяснять, кто прав, а кто злой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 17:14:23 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Cammomile, ОК. Спасибо. Просто код на деле больно громоздкий там, много очень сводных выборок из разных баз. Но на будущее буду знать. Хотя вот рядом товарищ утверждает что по скриптам гадать не будут, надо пример результата в екселе, говорит, рисовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 17:32:54 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39563938&tid=1690743]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
188ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 454ms |

| 0 / 0 |
