Это то, что вы хотите?
WITH ts_query AS (
SELECT "timestamp"
FROM "data"
ORDER BY "timestamp" DESC
LIMIT 1
)
SELECT date_trunc('hour', "timestamp")
FROM ts_query;
Другими словами ts_query
заменяет таблицу , а не столбец в следующем запросе.
В более сложном запросе вы можете использовать:
SELECT date_trunc('hour', t1."timestamp")
FROM ts_query tq CROSS JOIN
. . . -- more query logic here
Я делаю это в запросах, которые я хочу параметризировать, имея CTE (называемый params
), который содержит параметры, используемые в остальных запроса.
Если вы знаете , что у CTE ровно одна строка, вы можете использовать его как скалярный подзапрос:
SELECT date_trunc('hour', (SELECT "timestamp" FROM ts_query) )
Если у CTE больше чем одна строка, то это приведет к ошибке во время выполнения.