Sql 在另一个查询中使用WITH结果
我正在尝试使用存储查询结果,然后在另一个查询中使用其结果,如下所示:Sql 在另一个查询中使用WITH结果,sql,postgresql,Sql,Postgresql,我正在尝试使用存储查询结果,然后在另一个查询中使用其结果,如下所示: WITH results AS ( SELECT date, value FROM fruits WHERE fruit_name = 'apple' LIMIT 1 ) SELECT date, quantity, CASE WHEN fruits.date < results.date THEN fruits.q
WITH results AS (
SELECT
date,
value
FROM fruits
WHERE fruit_name = 'apple'
LIMIT 1
)
SELECT
date,
quantity,
CASE
WHEN fruits.date < results.date THEN fruits.quantity * results.value
ELSE 0
END AS "valueColumn"
FROM fruits;
我试图在此查询中生成一个名为valueColumn的新列。但要做到这一点,我需要在结果中使用信息
如上所述的查询为我提供了一个缺少FROM子句条目的表结果错误。如何使用结果中的信息作为查询的一部分?结果就像一个表。要使用它,必须将其包含在FROM子句中。在这种情况下,它只有一行,因此交叉连接就足够了:
WITH results AS (
SELECT date, value
FROM fruits
WHERE fruit_name = 'apple'
LIMIT 1
)
SELECT f.date, f.quantity,
(CASE WHEN f.date < r.date THEN f.quantity * r.value
ELSE 0
END) AS "valueColumn"
FROM fruits f CROSS JOIN
results r;
SELECT f.date, f.quantity,
(CASE WHEN f.date < MAX(f.date) FILTER (WHERE f.fruit_name = 'apple') OVER ()
THEN f.quantity * MAX(f.value) FILTER (WHERE f.fruit_name = 'apple') OVER ()
ELSE 0
END) AS "valueColumn"
FROM fruits f