gpt4 book ai didi

sql - 在 postgreSQL 的 CASE 中不允许使用集合返回函数

转载 作者:行者123 更新时间:2023-12-05 03:04:28 24 4
gpt4 key购买 nike

我一直在尝试运行此查询,直到不久前才能够运行。我不知道出了什么问题,我现在开始收到此错误?

您的数据库返回:错误:在 CASE 中不允许设置返回函数 提示:您可以将设置返回函数移动到 LATERAL FROM 项中。

我的查询:

SELECT distinct
(CASE
WHEN {PERIOD} = 'Previous Quarter' AND pto.pto_start_date < (date_trunc('quarter', now() - INTERVAL '1 month') + INTERVAL '1 month')::date AND pto.pto_end_date >= (date_trunc('quarter', now() - INTERVAL '1 month') + INTERVAL '1 month')::date
THEN generate_series(pto.pto_start_date, pto.pto_end_date, '2 day'::interval)
WHEN {PERIOD} = 'Current Quarter' AND pto.pto_start_date < (date_trunc('quarter', now() - INTERVAL '1 month') + INTERVAL '1 month')::date AND pto.pto_end_date >= (date_trunc('quarter', now() - INTERVAL '1 month') + INTERVAL '1 month')::date
THEN generate_series(pto.pto_start_date, pto.pto_end_date, '1 day'::interval)
ELSE
generate_series(pto.pto_start_date, pto.pto_end_date, '1 day'::interval)
END) AS dt
FROM cust_pto pto

开始日期和结束日期:

enter image description here

出了什么问题?

最佳答案

为什么现在出现错误:您已升级到 postgres 10。不再允许设置返回函数。

做什么:有不止一种方法可以完成您想要做的事情。为了让它尽可能接近您的原始查询,您所要做的就是将您的 CASE 语句放在 generate_series 中:

SELECT distinct generate_series(
pto.pto_start_date,
pto.pto_end_date,
CASE
WHEN {PERIOD} = 'Previous Quarter' AND pto.pto_start_date < (date_trunc('quarter', now() - INTERVAL '1 month') + INTERVAL '1 month')::date AND pto.pto_end_date >= (date_trunc('quarter', now() - INTERVAL '1 month') + INTERVAL '1 month')::date THEN
'2 day'::interval
ELSE
'1 day'::interval
END
) AS dt
FROM cust_pto pto

关于sql - 在 postgreSQL 的 CASE 中不允许使用集合返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52952384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com