【问题标题】:Using parameters from select statement inside case statement [duplicate]在case语句中使用select语句中的参数[重复]
【发布时间】:2018-07-06 08:15:43
【问题描述】:

我有以下问题

SELECT product.*,
(SELECT bid FROM server1 WHERE product_id = product.id) AS bid1,
(SELECT bid FROM server2 WHERE product_id = product.id) AS bid2,
CASE
    WHEN bid1 > bid2 THEN '1 wins'
    WHEN bid2 > bid1 THEN '2 wins'
    ELSE 'undecided'
END AS bid_status
FROM product
WHERE id= $1

此查询在 CASE 语句中抛出错误,指出 bid1 列不存在。如何将子查询作为 case 语句的变量传入?

【问题讨论】:

    标签: sql postgresql column-alias


    【解决方案1】:

    范围问题。首先将您的查询包装为派生表:

    select dt.*
        CASE
            WHEN bid1 > bid2 THEN '1 wins'
            WHEN bid2 > bid1 THEN '2 wins'
            ELSE 'undecided'
        END AS bid_status
    from
    (
    SELECT product.*,
        (SELECT bid FROM server1 WHERE product_id = product.id) AS bid1,
        (SELECT bid FROM server2 WHERE product_id = product.id) AS bid2,
    FROM product
    WHERE id= $1
    ) dt
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2012-12-12
      • 2014-12-05
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 2013-09-14
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多