我的sql查询出了什么问题(如果存在的话)

问题描述 投票:0回答:3

我试图了解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

Result

如果订单未平仓,这不是配偶给我写1,如果订单未平仓则给我写0?我是否误解了Case When Exists声明?

sql tsql case-when
3个回答
1
投票

您将需要相关


0
投票

您的子查询和主表之间缺少关联。我相信它们应该与OrderId相关。


0
投票

@@ GMB和@METAL非常感谢,我了解到,表之间的配置关系错误是问题,正确的工作查询是;

© www.soinside.com 2019 - 2024. All rights reserved.