我已将这个问题放在一起,我很难理解为什么它会返回LINES
的全部数量而不仅仅是LINES
的奇数ITEMS
}。例如:现在我有2 LINES
其中COMPLETED
被标记为True
。其中一个具有奇数ITEMS
,其中一个具有偶数ITEMS
但是尽管有条件,查询仍然返回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)
此处的目标是计算框中包含的LINES
的数量,这是一个奇数。
我怀疑问题是IN
子查询返回两个结果,但一个结果应该是奇数,一个结果应该是偶数。
答案 0 :(得分:1)
问题是外部查询与内部查询缺乏相关性。
您要求它计算aof_order_line_queue中的行数(与该行无关的内容)为真。因此,对于整个数据集,括号中的内容为true或false,而不是每行。如果它是真的,它将计算所有行。如果它是假的,它将返回0.
您必须添加类似
的内容AND aof_order_items.queue_id = aof_order_line_queue.queue_id
到您的内部查询。