与 postgresql 中的过滤函数合并

mer*_*low 4 postgresql

我正在运行这个查询:

SELECT
     SUM(PRICE) FILTER (my filter's parameters)
Run Code Online (Sandbox Code Playgroud)

当没有记录时它返回<null>

然后我尝试:

SELECT
       COALESCE(SUM(PRICE),0) FILTER (my filter's parameters)
Run Code Online (Sandbox Code Playgroud)

但后来我得到一个错误FILTER not valid for coalesce function

我的过滤器的参数是时间窗口,如下所示:

FILTER(WHERE date(order_date) >= (cast(current_date as date) - interval '1' day)) as day1
Run Code Online (Sandbox Code Playgroud)

<null> by 0没有记录如何更换 ?

Tim*_*sen 9

您应该尝试将整个FILTER表达式包装在 中COALESCE,例如

SELECT
    COALESCE(SUM(PRICE) FILTER (my filter's parameters), 0) AS sum_price
Run Code Online (Sandbox Code Playgroud)