LINUX.ORG.RU

Повторить объединенные запросы для каждой строки

 ,


0

1

Дело происходит в LibreOfficeBase (HSQLDB), так как эта зараза не умеет в умную группировку с сабсуммами в отчетах, приходится делать SQL-view с этой самой группировкой.

Вот я написал блок группы:

SELECT 'Категория'        as "col1", 
       ' '                as "col2",
       "Категории"."name" as "col3"
  FROM "Категории"
 WHERE "Категории"."key" = 2

UNION ALL

SELECT "Расходы"."date" as "col1",
       "Расходы"."sum"  as "col2",
       "Расходы"."name" as "col3"
  FROM "Расходы"
 WHERE DATEDIFF( 'day', "Расходы"."date", CURRENT_DATE ) < 30
   AND "Расходы"."category" = 2

UNION ALL

SELECT ' '                  as "col1",
       sum("Расходы"."sum") as "col2",
       'Сумма'              as "col3"
  FROM "Расходы"
 WHERE DATEDIFF( 'day', "Расходы"."date", CURRENT_DATE ) < 30
   AND "Расходы"."category" = 2
GROUP BY
    "Расходы"."category"

UNION ALL

SELECT ' ' as "col1",
       ' ' as "col2",
       ' ' as "col3"
  FROM "DUAL"

Теперь мне надо повторить этот блок для каждой строки таблицы «Категории» (поля key и name), заменяя 2 на «Расходы».«key».

Я пробовал сделать `select * from ( ... = B2.key ) as B1, Расходы as B2`, но ругаемси на то что B2.key не существует.

★★★

Тебе роллап чтоли нужен?
More advanced compatibility is offered by HyperXtremeSQL, which is a product based on HyperSQL. It supports more function compatibility, the PL/HXSQL language with a similar syntax to PL/SQL, extensive support for additional aggregate functions, window analytic functions with OVER(PARTITION ... ORDER ... ROWS | RANGE ...) , CUBE, ROLLUP, GROUPING SET and WITHIN GROUP (ORDER BY).
=p

Гугли как роллап эмулировать без оного.

mos ★★☆☆☆ ()
Ответ на: комментарий от mos

Ну это соственно, что я и пытаюсь сэмулировать. Дело в том, что:

HSQLDB doesn't support ROLLUP.
You may be able to write a UNION which has the different rows and use another select with a GROUP BY clause around the UNION to order the results.

Fred Toussi - 2014-11-11
Any major functionality like this is very time-consuming to implement. Commercial users have not so far shown any interest in funding the development.

PPP328 ★★★ ()
Последнее исправление: PPP328 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.