gpt4 book ai didi

sql - 如何使用 PostgreSQL 在 CASE 中循环?

转载 作者:行者123 更新时间:2023-11-29 13:52:15 25 4
gpt4 key购买 nike

在 PostgreSQL 的 SQL 中,我有一个列,其中数据以数组形式出现。我需要遍历数组并将该行分类为“无泳池”、“私有(private)泳池”或“加热泳池”。

实现此目标的最佳方法是什么?

    SELECT pool_features as PF, close_date as CD, close_price as CP, category as CAT
FROM (SELECT close_date, close_price, pool_features,
CASE
WHEN pool_features[0] = 'no_pool' THEN 'No Pool'
WHEN pool_features[0] = 'private_pool' THEN 'Private Pool'
WHEN pool_features[0] = 'heated_pool' THEN 'Heated Pool'
ELSE 'No Pool'
END AS category
FROM dwellings.listings_oid
) as laundryData
WHERE close_date > '2016-04-01' AND close_price IS NOT NULL AND close_price < 1000000000

最佳答案

仔细阅读您的问题,看起来 pool_features 是一个数组,第一个元素包含池的基本描述。如果不是这种情况,请编辑您的问题。

首先,SQL 数组是数学矩阵,它们是从 1 开始的。所以你需要将坐标称为 1 而不是 0。

其次,虽然这种方法有效,但如果数组是无序的(但你也有 1NF 问题),它就会崩溃。如果是这种情况,请仔细考虑你为什么要做你正在做的事情并相应地重新设计。然而,如果它仍然适用(偶尔有理由打破 1NF),那么您可以使用 ANY() 关键字。因此,您可以将其写成 'no_pool' = ANY(pool_features)

而不是: pool_features[1] = 'no_pool'

关于sql - 如何使用 PostgreSQL 在 CASE 中循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928602/

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