Я немного новичок в SQL, поэтому, пожалуйста, будьте осторожны ...
Я пытаюсь создать [устаревший] самообъединение BigQuery SQL, например:
SELECT * FROM (query 1), (query 1)
Синтаксис найден в другом ответе SO здесь .Однако запрос 1 очень длинный, и я не хочу копировать / вставлять весь запрос несколько раз.Есть ли способ назвать запрос 1, чтобы мне не нужно было вставлять все заново?
Я пытаюсь сделать что-то вроде следующего (в отношении ссылок на A
):
SELECT
*
FROM
(query 1) AS A,
(SELECT
Category as Hier_Level,
MAX(Department),
Category,
"VARIOUS" AS Subcategory,
SUM(DOLLARS)
FROM
A
GROUPBY
Category) AS B,
(SELECT
Department as Hier_Level,
Department,
"VARIOUS" AS Category,
"VARIOUS" AS Subcategory,
SUM(DOLLARS)
FROM
A
GROUPBY
Department,
Category) AS C,
...
Обновление
Хотя вопрос сосредоточен на том, чтобы не повторять код запроса 1, конечной целью агрегации является получение данных, подобных приведенным ниже, которые выводятся по запросу 1:
Hier_Level Department Category Subcategory Dollars
Subcategory Electronics TV LCD 3500
Subcategory Electronics TV OLED 6000
Subcategory Electronics Phone iPhone 600
и возвращает ту же таблицу со строками, добавленными для агрегатов из groupbys.Результаты должны выглядеть следующим образом:
Hier_Level Department Category Subcategory Dollars
Subcategory Electronics TV LCD 3500
Subcategory Electronics TV OLED 6000
Subcategory Electronics Phone iPhone 600
Category Electronics TV Various 9500
Category Electronics Phone iPhone 600
Department Electronics Various Various 10100
В стандартном SQL, насколько я понимаю, что-то подобное можно сделать с помощью CTE и объединения всех, но ни один из них не доступен в BQ Legacy SQL.