|
|
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Спецы, поделитесь пожалуйста best practice. Имеется CTE собраный из нескольких селектов. Требуется сделать выборку из этого CTE с урезанным набором полей (соотвественно схлопнутся записи), добавить к этому одно поле (нацепить на каждую запись некое вычисление) и приджойнить добавленное поле обратно к изначальному CTE. Что посоветуете? Вью? Табличную функцию? Может можно как-то вложить CTE в CTE ? Etc...? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 17:49:38 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Тут еще друидский круг нужен, как без него CTE в CTE вкладывать-то?... З.Ы. Берете и делаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:14:06 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetМожет можно как-то вложить CTE в CTE ? Etc...?Через запятую. Посмотрите справку с примерами по CTE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:21:01 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Я так понял здесь специалисты отвечают на вопросы новичков. Вот мне понадобилось решить задачу на T-SQL , на котором обычно не пишу. Вот у меня вопрос. Причём не прошу код за меня написать. Прошу описать в паре предложений как обычно такие вопросы решаются. К чему это глумление? Заранее спасибо за конструктивную помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:26:51 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Спасибо, посмотрю. Раньше что-то не нагуглилось такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:27:58 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetalexeyvg, Спасибо, посмотрю. Раньше что-то не нагуглилось такое.Лучше справку смотреть, а не гуглить (хотя справка у МС ухудшается с каждым годом). Просто после определения CTE ставите запятую, и пишите новое определение CTE, в котором можно использовать предыдущее (все предыдущие). Пример из справки "C. Using multiple CTE definitions in a single query" Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:40:03 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Моя задача чуть сложнее. Мне нужно второй CTE селектить из результата первого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:46:18 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
А, увидел. Обращение к первому CTE тоже работает. Огромное спасибо! Это то что искал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2017, 19:54:56 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetК чему это глумление? Заранее спасибо за конструктивную помощь."Мне надо забить гвоздь. Что посоветуете? Бить правой рукой? Бить с разбега? Или повыше прыгнуть? Может как-то можно гвоздь молотком забить? Вот мне понадобилось решить задачу, которой обычно не занимаюсь. Причём не прошу сделать это за меня. Прошу описать в паре предложений как обычно такие вопросы решаются.". Вам самому не смешно? Уж простите, в ответе не больше глумления, чем вы своим вопросом продемонстрировали. В справке все уже давно с примерами расписано. Заранее спасибо за адекватные вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 00:45:14 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Клоунада не делает Вам чести. Забивание гвоздя - операция простая, интуитивная, в один цикл. Мне надо было произвести операцию в несколько циклов, один из которых пользуется результатом предыдущего. Никак с забиванием гвоздя не сравнить. Для незнакомой среды - нетривиально. Потратил несколько часов на попытку самостоятельного решения. Уважаемый alexeyvg счёл мой вопрос адекватным - и помог. Спасибо ему. Вы же предпочли глумиться. Нет, мне не жалко, наздоровье. Главное, получил ответ на свой вопрос. Да и Вас воспитывать не претендую - поди взрослый дядя. Спасибо что модерируете этот форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 01:21:12 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetУважаемый alexeyvg счёл мой вопрос адекватным - и помог. Спасибо ему.Уважаемый alexeyvg -- поблагодарим же его за терпение -- вам перепечатал хелп синтаксиса. slovnetЗабивание гвоздя - операция простая, интуитивная, в один цикл. Мне надо было произвести операцию в несколько циклов, один из которых пользуется результатом предыдущего. Никак с забиванием гвоздя не сравнить. Для незнакомой среды - нетривиально. Потратил несколько часов на попытку самостоятельного решения. Т.е за два часа не смогли найти и осилить примеры к синтаксису, который гуглится за 30 секунд. Если это нетривиально, то у меня для вас плохие новости, ага. Спасибо за интересный вопрос (два). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 01:37:22 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnetЗабивание гвоздя - операция простая, интуитивная, в один цикл. Мне надо было произвести операцию в несколько циклов, один из которых пользуется результатом предыдущего. Никак с забиванием гвоздя не сравнить. Для незнакомой среды - нетривиально. Потратил несколько часов на попытку самостоятельного решения.А вы не гуглите, не надо, по отдельным командам это точно непродуктивно. Возникла задача, тем более конкретно с командой CTE, так читайте сразу в хелпе, с примерами. Это точно бы не заняло несколько часов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 08:31:59 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Спасибо за совет насчёт хелп vs гугл. Буду знать. Я видел этот хелп. И делал такое не раз. Но это пример обычного CTE. А мне надо было результат уже сведённых таблиц отфильтровать дистинктом по части полей и нацепить на него нарастающий итог. Такого примера в хелпе нет. Не пришло в голову что можно тупо выбрать из предыдущей таблицы CTE. Пытался сложить CTE во вью и приджойнить к нему ещё один CTE, но понимал что это неправильный ход. Поэтому здесь спросил. Ещё раз спасибо, ваша помощь это как раз пример того как можно потратив 5 минут сэкономить другому пару часов поисков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 09:53:05 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, точно в хедп смотрели? https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql C. Using multiple CTE definitions in a single query ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 09:55:32 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Уважаемый мэтр, Покажите пожалуйста мастер-класс тривиального нахождения гуглом за 5 минут решения моей задачи обозначенной в первом сообщении. То есть пример синтаксиса который решит именно эту задачу. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:10:57 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Sql cte usage https://technet.microsoft.com/en-us/library/ms190766(v=sql.105).aspx 1я ссылка в гугле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:14:03 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, при всём (огромном) уважении, зря Вы так сегодня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:18:40 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
TaPaK, Спасибо. Я читал этот хелп. И сейчас ещё раз посмотрел. Этого недостаточно было для решения моей задачи. Я делал как в этом примере, до того как сдесь спросил. Этого давало декартово произведение. И дистинкт тут не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:27:54 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Cammomile, И как эта ссылка даёт ответ на поставленный вопрос. Вы первое сообщение читали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:31:08 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, авторЭтого давало декартово произведение. что-то всё хуже и хуже.. cte само вам умножало? жестокая штука.... *сдесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:32:14 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
Уважаемый TaPaK, Вы первое сообщение читали? Я прямо там всё объяснил. В CTE да, умножаются строки, мне именно так и надо. Но нарастающий итог надо нацепить на схлопнутую выборку, по урезанному количеству полей. То есть надо взять результат готового CTE, сделать по нему дистинкт по части полей, потом в этой уже схлопнутой выборке добавить ROW_NUMBER() OVER (PARTITION BY... и к этому прицепить нарастающий итог а потом приджойнить результат к изначальной умноженной выборке. Есть такой пример в хелпе? P.S. *сдесь - опечатка, печатаю транслитом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:47:54 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, авторТо есть надо взять результат готового CTE да в хелпе есть пример использования как минимум двух результатов cte ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:51:12 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
TaPaK, Ну вот и ткните меня носом в синтаксис который решит именно эту задачу. P.S. Надо понимать, насчёт умножения записей уже не так плохо и жёстко? И почему приведенный Вами раньше пример не подходит тоже разобрались? P.P.S Мне ж не жалко, пусть мне покажут что не умею читать хелп и покажут где именно пропустил нужное. Только спасибо скажу. Век живи.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 10:59:40 |
|
||
|
Best practice по сведению двух CTE
|
|||
|---|---|---|---|
|
#18+
slovnet, на вопрос как использовать результат cte в другом хелп отвечает? при чём здесь ваши извращённые желания умножать делить и тп к синтаксису и bol???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:02:12 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=175&tid=1690743]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
20ms |
get forum data: |
3ms |
get page messages: |
96ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 440ms |

| 0 / 0 |
