带条件模的SQL子查询

带条件模的SQL子查询,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我已经把这个查询放在一起了,我很难理解为什么它会返回完整数量的行,而不仅仅是包含奇数项的行。现在我有两行,其中COMPLETED标记为True。其中一个项目的数量为奇数,另一个项目的数量为偶数,但尽管有条件查询,查询仍返回2。我的问题出了什么问题 SET @linesCompleted = (SELECT Count([so_line_number]) AS LINES FROM [aof_order_line_queue]

我已经把这个查询放在一起了,我很难理解为什么它会返回完整数量的行,而不仅仅是包含奇数项的行。现在我有两行,其中COMPLETED标记为True。其中一个项目的数量为奇数,另一个项目的数量为偶数,但尽管有条件查询,查询仍返回2。我的问题出了什么问题

SET @linesCompleted = (SELECT Count([so_line_number]) AS LINES 
                       FROM   [aof_order_line_queue] 
                       WHERE  [completed] = 'True' 
                              AND (SELECT Count([serial_number]) AS ITEMS 
                                   FROM   [aof_order_items] 
                                   WHERE  so_line_number IN (SELECT 
                                          [so_line_number] 
                                                             FROM 
                                          [aof_boxes_lines] 
                                                             WHERE 
                                          [aof_boxes_id] = 880)) % 2 = 1) 
这里的目标是计算一个框中包含的奇数行的数量


我怀疑这个问题可能在返回两个结果的子查询中出现,尽管一个结果应该是奇数,一个结果应该是偶数。

问题在于外部查询与内部查询之间缺乏相关性

您要求它计算aof_order_line_队列中的行数,其中与该行无关的内容为真。因此,括号中的内容对于整个数据集不是真就是假,而不是每一行。如果这是真的,它将计算所有的行。如果为false,则返回0

你必须加上这样的东西

AND aof_order_items.queue_id = aof_order_line_queue.queue_id

到您的内部查询。

子查询与外部查询关联的部分在哪里?@CaiusJard我不确定我是否理解您的问题。这是整个查询。我看不出你的查询是如何进行计数并得出奇数的,它与外部查询链接的,外部查询想知道结果是否为奇数。。示例SELECT*FROM person p WHERE exists从student_name=p.name的考试中选择null这两个查询链接在一起,因为内部查询包含与外部查询相比较的数据。。如果你没有这个链接,那么你就不会得到你期望的结果-什么链接你的查询在一起?你最好放弃这个XY问题,只给我们表格和示例数据。我想一个更简单的解决办法是。。。按计数为*%2=1的某物分组我不明白此人如何与地址链接,您没有直接参考哪个人属于哪个地址。-是的,这就是我一直在说的关于你的问题的观点。我认为你们可能把XY问题推向了沉没成本谬误的领域;转储此查询,发布一些示例数据并提出一个问题,这是您试图解决的实际问题我需要知道哪些订单的明细行数为奇数,而不是您设计的解决方案的问题我有这个查询,我认为它可以解决我的问题,但它不起作用-为什么?每个序列号都有一个相关的SO行号。每个框可以有多个SO\U线号。我想为盒子中存在的且序列号出现奇数的每个序列号计算SO_LINE_编号。看在上帝的份上,JIM,发布一些示例数据和预期结果,这样我们就可以编写一个有效的查询,而不是试图润色一个垃圾: