首页 > 解决方案 > 执行更新查询,设置 True if condition 和 False if not condition

问题描述

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

对于这些客户,细分字段将设置为 true,如果他们的细分为 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';

非常感谢你的帮助

标签: sqlpostgresql

解决方案


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

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;

推荐阅读