Functions

如果值為空,則取下一個更高的值

  • September 29, 2020

我有一個需要 3 個值的函式,然後使用這些值從表中返回一個值。

FUNCTION: odwh_data.annual_rental(connection_type,data_rate,date)

CREATE OR REPLACE FUNCTION odwh_data.ead_charge_annual_rental(
   "connection_type$" character,
   "data_rate$" integer,
   "start_datetime$" timestamp without time zone)
 RETURNS numeric AS
   
SELECT  
   annual_rental
FROM    
   odwh_system.ead_credit_charge
WHERE   
   connection_type = connection_type$
AND data_rate = data_rate$
AND start_datetime$::date BETWEEN COALESCE(valid_from,start_datetime$::date) AND COALESCE(valid_to,start_datetime$::date);

下面是 odwh_system.ead_credit_charge 表的範例:

在此處輸入圖像描述

目前傳遞的 data_rate 不在列表中,不會返回 year_rental 值。我想更新它,因此如果 data_rate 的值為 30,它將採用下一個更高的值,例如 100,因此將返回 185.00 英鎊的年租金。

目前傳遞的 data_rate 不在列表中,不會返回 year_rental 值。我想更新它,因此如果 data_rate 的值為 30,它將採用下一個更高的值,例如 100,因此將返回 185.00 英鎊的年租金。

也許你需要

SELECT  
   annual_rental
FROM    
   odwh_system.ead_credit_charge
WHERE   
   connection_type = connection_type$
AND data_rate >= data_rate$
AND start_datetime$::date BETWEEN COALESCE(valid_from,start_datetime$::date) AND COALESCE(valid_to,start_datetime$::date)
ORDER BY data_rate LIMIT 1;

?

引用自:https://dba.stackexchange.com/questions/276243