执行更新查询,如果条件为True,则设置False



我需要编写一个存储过程,它会让我的客户返回,因为他们在特定时间段内的购买行为,这些客户属于特定的细分市场。

对于这些客户,segment字段将设置为true,如果他们的segment为true,则不来自给定查询的客户需要设置为false。

我对程序本身有问题,我认为返回类型有问题,有人能帮我吗。

在不使用时态表的情况下,是否可以将查询中没有的值设置为FALSE?

CREATE OR REPLACE FUNCTION segment_men1() AS
RETURNS void AS
$BODY$
BEGIN
FOR r IN
SELECT AD.id FROM account AD
INNER JOIN transactions TRA ON TRA.customerID = AD.id
WHERE AD.gender = "male"
AND TRA.transactionDate >= current_date - interval "365" days;
LOOP
UPDATE account
SET Segment_Men = true
WHERE NEXT r;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql';

非常感谢您的帮助

为什么要使用循环?直接更新即可:

UPDATE account AD
SET Segment_Men = true
FROM transactions TRA 
WHERE TRA.customerID = AD.id AND
AD.gender = 'male' AND
TRA.transactionDate >= current_date - interval '365' days;

相关内容

最新更新