Axapta 在查询中混合临时表和实表
为什么这些查询中的一个有效,而另一个无效?我编写了工作查询,然后将表设为临时表,必须重写该表才能使临时表位于外部 这是表中的数据: tmpTASItemQtyInventDim: |ItemId | InventDimId | InventQty | |-------|--------------|-----------| |73016 | Dim 11542913 | 0 | |Sales Id |Line No | ItemId | InventDimId | SalesQty | |------------|--------|--------|--------------|-----------| |SO120036796 | 1| 73016 | Dim 11542913 | 2 |Axapta 在查询中混合临时表和实表,axapta,dynamics-ax-2009,x++,Axapta,Dynamics Ax 2009,X++,为什么这些查询中的一个有效,而另一个无效?我编写了工作查询,然后将表设为临时表,必须重写该表才能使临时表位于外部 这是表中的数据: tmpTASItemQtyInventDim: |ItemId | InventDimId | InventQty | |-------|--------------|-----------| |73016 | Dim 11542913 | 0 | |Sales Id |Line No | ItemId | InventDimId | S
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");
|ItemId | InventDimId | InventQty|
|-------|--------------|-----------|
|73016 |尺寸11542913 | 0|
销售线:
|ItemId | InventDimId | InventQty |
|-------|--------------|-----------|
|73016 | Dim 11542913 | 0 |
|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");
|销售标识|行号|项目标识|库存|销售数量|
|------------|--------|--------|--------------|-----------|
|SO120036796 | 1 | 73016 |尺寸11542913 | 2|
不起作用:
|ItemId | InventDimId | InventQty |
|-------|--------------|-----------|
|73016 | Dim 11542913 | 0 |
|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");
仅选择第一个tmpTASItemQtyInventDim
从salesLine连接itemId、InventDimId、sum(salesQty)
按项目ID、InventDimId分组
其中salesLine.SalesId=='SO120036796'&&
tmpTASItemQtyInventDim.ItemId==salesLine.ItemId&&
tmpTASItemQtyInventDim.InventDimId==salesLine.InventDimId&&
tmpTASItemQtyInventDim.InventQty
有效:
|ItemId | InventDimId | InventQty |
|-------|--------------|-----------|
|73016 | Dim 11542913 | 0 |
|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");
从salesLine中选择firstonly itemId、InventDimId、sum(salesQty)
按项目ID、InventDimId分组
其中salesLine.SalesId=='SO120036796'
存在加入tmpTASItemQtyInventDim
其中,tmpTASItemQtyInventDim.ItemId==salesLine.ItemId&&
tmpTASItemQtyInventDim.InventDimId==salesLine.InventDimId&&
tmpTASItemQtyInventDim.InventQty
两者都应该输出
不足的数量
,但第一个从内存中说好的数量
,我认为您也需要在第一个表上分组
看见
选择firstonly项目ID,InventDimId
从tmpTASItemQtyInventDim
按项目ID、InventDimId分组
join itemId、InventDimId、sum(salesQty)
来自销售线
按项目ID、InventDimId分组
其中salesLine.SalesId=='SO120036796'&&
tmpTASItemQtyInventDim.ItemId==salesLine.ItemId&&
tmpTASItemQtyInventDim.InventDimId==salesLine.InventDimId&&
tmpTASItemQtyInventDim.InventQty
混合临时表和真实表就像在鹅卵石路上骑自行车。你并不总是得到你认为你得到的东西,而且
在AX 2012中,您可以使用工作更可预测的TempDB
另请参见。非常有趣的帖子。有时我应该使用trace parcer,并真正检查我的查询成本,我认为。太棒了!不完全理解为什么我需要这样做,但它是有效的。我认为这是因为没有group by的查询相当于
code
Select SalesLine.ItemId,TmptSiteMQTyInventDim的SalesLine.InventDimId从TmptSiteMQTyInventDim.ItemId==SalesLine.ItemId和TmptSiteMQTyInventDim.InventDimId==SalesLine.InventDimId…..code
如果“您的不工作是”测试SalesLine.ItemId,它认为会产生正确的结果