【发布时间】:2019-10-03 06:14:20
【问题描述】:
我试图了解case when exists 表达式的工作原理,有两张表,一张是trOrderHeader,它存储有关任何订单的主要信息。另一个是trOrderLine,它存储有关订单的详细信息,还有一个列IsClosed,表示订单以某种方式关闭(取消或完成)。
所以我的查询低于我正在尝试使用 IsClosed 列获取 OrderLineID(我可以通过连接来完成它很容易,但我正在尝试 case when exists 表达式)但所有 IsClosed 列都返回 1;
SELECT
OrderLineId,
IsClosed =
CASE
WHEN EXISTS (select * from trOrderHeader where IsClosed=1)
THEN 1
WHEN EXISTS (select * from trOrderHeader where IsClosed=0)
THEN 0
END
FROM
trOrderLine
GROUP BY OrderLineId
如果订单已关闭写入 1,如果订单未关闭写入 0,这不是应该给我吗?
我是不是误解了case when exists 的表达方式?
【问题讨论】: