在case语句中使用select语句中的参数[重复]
Posted
技术标签:
【中文标题】在case语句中使用select语句中的参数[重复]【英文标题】:Using parameters from select statement inside case statement [duplicate] 【发布时间】: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 语句的变量传入?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在case语句中使用select语句中的参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Informix 是不是支持 SELECT 查询中的 CASE 语句