C# 带有子查询的查询返回null

C# 带有子查询的查询返回null,c#,tsql,C#,Tsql,我有一个查询,尽管还有很多行要处理,但没有返回结果 SELECT O.[OrderLineId] , O.[Article] , O.[ArticleDescription] , O.[QtyOrdered] , O.[QtyDelivered] , O.[BoxId] , O.[Status] , O.[Picker] , O.[PickLocation] , O.[Sorting] , O.[DateCreated] , O.[DateModified] FROM [dbo].[PickBa

我有一个查询,尽管还有很多行要处理,但没有返回结果

SELECT O.[OrderLineId]
, O.[Article]
, O.[ArticleDescription]
, O.[QtyOrdered]
, O.[QtyDelivered]
, O.[BoxId]
, O.[Status]
, O.[Picker]
, O.[PickLocation]
, O.[Sorting]
, O.[DateCreated]
, O.[DateModified]
FROM [dbo].[PickBatch] P 
INNER JOIN [dbo].[Boxes] B ON P.PickBatchId = B.PickBatchId
INNER JOIN [dbo].[OrderLines] O ON B.BoxId = O.BoxId
WHERE P.PickBatchId = @PickBatchId 
AND (O.[Status] = @Status)
AND (O.[PickLocation] = (SELECT TOP(1) O.[PickLocation] 
                        FROM [dbo].[PickBatch] P 
                      INNER JOIN [dbo].[Boxes] B ON P.PickBatchId = B.PickBatchId
                      INNER JOIN [dbo].[OrderLines] O ON B.BoxId = O.BoxId
                      WHERE P.PickBatchId = @PickBatchId 
                      AND O.[Status] = @Status      
                      ORDER BY O.Sorting))
子查询似乎返回了一个结果,同时状态发生了变化,因此主查询不返回任何结果。这可能吗?还是我又犯了一个错误


当查询未返回任何结果时,系统会提示用户已拾取所有内容,用户可以开始新的批处理。当他想要开始一个新的批次时,有一个检查,如果他没有一个开放的批次。这会引发一些查询,而此查询将被删除。然后查询返回一个结果。所以基本上查询是被激发的,没有结果,秒。稍后,相同的查询将返回结果

我想假设您的查询是精确的,但不能在主查询和子查询中使用相同的别名。别名用于区分同一个表。因此,在子查询中:

  • 不要使用
    P
    而使用
    P2
  • 使用
    B2
  • 使用
    O2

所以。如果您的查询不起作用,请发布一个数据集和预期结果集

您能否描述此表的主键。我认为子查询的问题总是返回一行,但与主查询值不匹配。

为了澄清,你能提供你的查询的示例数据和预期结果吗?也许你需要移动你的选择,因为你似乎是在从O开始对B和P进行检查。请发布一个数据集和预期结果集请在子查询中更改你的别名使用不同的别名并不能解决问题