|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Подскажите возможно ли добавить к результату подзапросов Z0 и Z1 строки, которые суть - результат их группировки по некоторым признакам. Количество и содержание полей воспроизвести - конечно не проблема. А вот итоги... Полагаю, что это можно сделать с помощью UNION. И вроде бы возникает рекурсия. Зачем такая заморочка? Потому Z1 долго выполняется и не хочется его запускать второй раз для получения результата группировки. ЭСКИЗ с неправильным синтаксисом: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:22 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265Подскажите возможно ли добавить к результату подзапросов Z0 и Z1 строки, которые суть - результат их группировки по некоторым признакам. Что мешает попробовать ? С соблюдением синтаксиса serg0265А вот итоги... Изучить WITH ROLLUP ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:24 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Glory, Сам не пойму, почему-то не принимает интерпретатор SQL Managment Studio 2008. Сейчас Z завернут в функцию одного оператора, к которому добавил приведенный "хвостик", начиная с AS. Без "хвостика" - все Ок проходит. Вот что вижу (см.вложение) и текст: "Msg 156, Level 15, State 1, Procedure f_MTR, Line 281 Incorrect syntax near the keyword 'as'." ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:34 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265И вроде бы возникает рекурсияОткуда ей взяться без рекурсивного CTE? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:35 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265Вот что вижу (см.вложение) и текст: А вы еще поменьше фрагмент кода в скриншоте можете сделать ? Чтобы интереснее было угадывать ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:35 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Glory, А вы обратили внимание на количество строк в сообщении об ошибке? Возможно тогда не предлагали бы выложить всю процедуру здесь. Или как? Чего не хватает кроме того, что описано и чтобы составить мнение? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:40 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265А вы обратили внимание на количество строк в сообщении об ошибке? А вы не умеет создавать _тестовые_ запросы ? Где меньше строк, но соблюдается принцип ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:41 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Glory, Приходилось. У вас будут конкретные предложения или будете дальше "мозг компостировать"? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:43 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265У вас будут конкретные предложения или будете дальше "мозг компостировать"? Изучите синтаксис и соблюдайте его. Или наймите того, кто знает синтаксис и соблюдает его. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:45 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Glory, Понятно. "Спасибо" за помощь. Подождем других знатоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:45 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265Glory, Понятно. "Спасибо" за помощь. Подождем других знатоков.Код показывайте или идите на форум, где по фотографиям лечат. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 14:57 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Вот как надо оформлять в SQL решение. Может кому пригодится: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:00 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265, и оно так выполняется быстрее чем два отдельных запроса - с группировкой и без? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:01 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265Вот как надо оформлять в SQL решение Неужели вы справились ? А когда планируете начать изучение WITH ROLLUP ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:02 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Glory, Напоследок совет: поучитесь хорошим манерам. Особенно когда приходят за помощью. Для этого и предназначен форум. А то только "воздух портите". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:07 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265Напоследок совет: поучитесь хорошим манерам. А вы что являетесь сертифицированным носителем "хороших манер" ? Или все, что делаете вы, автоматически считается хорошими манерами ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:10 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
[quot Glory]serg0265serg0265А вот итоги... Изучить WITH ROLLUP Вау, я и не подозревал о таких возможностях. Полтора года работаю с sql, и в подобной ситуации агрегировал либо в отчётной системе, либо через времянки. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:32 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Насчет ROLLUP пишут, мол, будет удалена. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:39 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Владислав КолосовНасчет ROLLUP пишут, мол, будет удалена.Зато GROUP BY (Transact-SQL)<grouping set item> ::= <simple group by item> | <rollup spec> | <cube spec> <grouping set item list> ::= <grouping set item> [ ,...n ] Non-ISO-Compliant Syntax [ GROUP BY [ ALL ] group_by_expression [ ,...n ] [ WITH { CUBE | ROLLUP } ] ] http://msdn.microsoft.com/ru-ru/library/ms177673(v=sql.100).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:44 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Владислав КолосовНасчет ROLLUP пишут, мол, будет удалена. Не вижу, что удалят Вижу "Предложение GROUP BY имеет два синтаксиса: совместимый с ISO и несовместимый с ISO" ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:47 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
GloryВладислав КолосовНасчет ROLLUP пишут, мол, будет удалена. Не вижу, что удалят Вижу "Предложение GROUP BY имеет два синтаксиса: совместимый с ISO и несовместимый с ISO" ниже есть. не-исо предполагают когда-нибудь удалить. WITH ROLLUP В будущей версии Microsoft SQL Server эта возможность будет удалена. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:52 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
dawGloryпропущено... Не вижу, что удалят Вижу "Предложение GROUP BY имеет два синтаксиса: совместимый с ISO и несовместимый с ISO" ниже есть. не-исо предполагают когда-нибудь удалить. WITH ROLLUP В будущей версии Microsoft SQL Server эта возможность будет удалена. Ну так надо просто использовать ISO стандарт. Результат то тот же будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:55 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Продолжу топик, т.к. выяснилось, что найденное решение - возможно, но не оптимально. Оно не исполняет объявленного в начале требования: "Потому Z1 долго выполняется и не хочется его запускать второй раз для получения результата группировки.". Так вот сейчас время исполнения объединения в решении умножилось почти в 3 раза. Так понимаю, что из приведенной декларации не следует оптимизация: однократное выполнение "тяжелого" подзапроса и последующее использование результата в остальных компонентах UNION. А следует только декларация, которая тупо подставляется при исполнении, умножая время исполнения исходника. Вы скажете, используй временную таблицу. Но тогда невозможно будет "завернуть" все в inline функцию, а только multiline. Это в свою очередь неудобно по другой причине: для multiline надо точно декларировать состав, порядок и тип всех полей результата. А сейчас в результате - десятки столбцов, состав и определение которых постоянно меняются. Короче гимор! Потому inline - удобнее. И вообще, мне не понятно, почему имеет место противоречие в допущениях языка T-SQL: в inline не надо определять результат, а в multiline - обязательно. Почему бы не допустить это для некоторых ситуаций? Так удобнее было бы. Короче тема и задача остаются открытыми. Есть ли способ остаться "в рамках" inline? Если ли вообще решение при указанных условиях? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 10:27 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
serg0265Короче тема и задача остаются открытыми. Мало того, они остаются вообще неизвестными. Потому что вы рассказывает про выбранный вами способ решения задачи, а не про саму задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 10:29 |
|
Подзапрос в UNION
|
|||
---|---|---|---|
#18+
Ну как же нет описания задачи? Вот оно было уже в виде первичного решения:serg0265Вот как надо оформлять в SQL решение. Может кому пригодится: Код: sql 1. 2. 3. 4. 5. 6.
Куда уж конкретнее. Вопрос тоже обозначен: можно ли не выполнять Z несколько раз, а использовать результат один раз без временной таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 10:34 |
|
|
start [/forum/topic.php?fid=46&tid=1700455]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 235ms |
total: | 365ms |
0 / 0 |