代码之家  ›  专栏  ›  技术社区  ›  jkeys

如何在Postgres中将参数添加到聚合的值表达式中?

  •  1
  • jkeys  · 技术社区  · 5 月前

    我有一个查询,需要在调用中添加位置参数 max(expression) .

    SELECT max(my_real_column) FROM my_table
    

    我试过串联运算符,例如。 my_real_column || $1 ,但这会产生操作员错误:

    SELECT max(my_real_column || $1) FROM my_table
    

    postgres文档显示聚合函数可以接受多个表达式,所以我尝试了这样做:

    SELECT max(my_real_column, SELECT $1) FROM my_table
    

    但这同样行不通。

    我如何使用标准SQL来实现这一点?

    2 回复  |  直到 5 月前
        1
  •  4
  •   Dogbert    5 月前

    max 只接受一个值。要计算的最大值 max(..) 和一个固定值,使用 greatest() function 并通过 最大值(..) 固定值:

    SELECT greatest(max(my_real_column), $1)
    ...
    
        2
  •  -1
  •   Nidula Nimadith Wijesekara    5 月前

    向添加位置参数 max(expression) 在PostgreSQL中 使用a CASE 陈述

    SELECT max(CASE WHEN $1 IS NULL THEN  my_real_column ELSE $1 END)
    
    FROM my_table;
    
    SELECT max(GREATEST(my_real_colomn,$1))
    
    FROM my_table;