Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在另一个查询中使用WITH结果_Sql_Postgresql - Fatal编程技术网

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