我试图了解case when exists
语句的工作原理,有两个表,其中一个是trOrderHeader
,用于存储有关任何订单的主要信息。其他是trOrderLine
,它存储有关订单的详细信息,并且有一列IsClosed
指示订单以某种方式被关闭(取消或完成)。
所以我的查询在下面,我试图用IsClosed列获取OrderLineID(我可以通过连接来完成它,这很容易,但是我正在尝试存在语句时的情况),但是所有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
声明?
您将需要相关
您的子查询和主表之间缺少关联。我相信它们应该与OrderId
相关。
@@ GMB和@METAL非常感谢,我了解到,表之间的配置关系错误是问题,正确的工作查询是;