为什么其中一个查询可以工作而另一个却不工作?我编写了正在运行的查询,然后将该表临时创建,并且必须将其重写为在外部具有临时表。在查询中混合使用临时表和实际表
这是表中的数据:
tmpTASItemQtyInventDim:
|ItemId | InventDimId | InventQty | |-------|--------------|-----------| |73016 | Dim 11542913 | 0 |
SalesLine:
|Sales Id |Line No | ItemId | InventDimId | SalesQty | |------------|--------|--------|--------------|-----------| |SO120036796 | 1| 73016 | Dim 11542913 | 2 |
不起作用:
select firstonly tmpTASItemQtyInventDim
join itemId, InventDimId, sum(salesQty) from salesLine
group by itemId, InventDimId
where salesLine.SalesId == 'SO120036796' &&
tmpTASItemQtyInventDim.ItemId == salesLine.ItemId &&
tmpTASItemQtyInventDim.InventDimId == salesLine.InventDimId &&
tmpTASItemQtyInventDim.InventQty < salesLine.SalesQty;
if (tmpTASItemQtyInventDim.ItemId)
info("Insufficient Qty");
else
info("Good qty");
作品:
select firstonly itemId, InventDimId, sum(salesQty) from salesLine
group by itemId, InventDimId
where salesLine.SalesId == 'SO120036796'
exists join tmpTASItemQtyInventDim
where tmpTASItemQtyInventDim.ItemId == salesLine.ItemId &&
tmpTASItemQtyInventDim.InventDimId == salesLine.InventDimId &&
tmpTASItemQtyInventDim.InventQty < salesLine.SalesQty;
if (salesLine.ItemId)
info("Insufficient Qty");
else
info("Good Qty");
双方应输出Insufficient Qty
,而是先说Good Qty
。
太棒了!没有完全理解为什么我需要这样做,但它的工作原理。 –
我认为它是因为没有group by的查询等同于'code'从tmpTASItemQtyInventDim选择SalesLine.ItemId,SalesLine.InventDimId内部加入salesLine ON tmpTASItemQtyInventDim.ItemId == salesLine.ItemId和 tmpTASItemQtyInventDim.InventDimId == salesLine.InventDimId。 ...'代码'如果“你的工作不正常”测试SalesLine.ItemId它认为会产生正确的结果 –