【发布时间】:2014-07-08 06:31:39
【问题描述】:
如果我删除最后一行是 order by,我有以下 SQL 查询。 谁能告诉我为什么当我对此查询下订单时这不起作用。
declare @UQ as decimal(20,6);
declare @MUQ as decimal(20,6);
select @UQ=ItemUnit_UnitQuantity, @MUQ=ItemUnit_MainUnitQuantity from tItemUnit
where ItemUnit_Id = 23996
select top 1 (InvBuyPriceValue/InvL_Quantity)*iu.ItemUnit_UnitQuantity/iu.ItemUnit_MainUnitQuantity*@MUQ/@UQ as InvBuyPrice, Discount
from tInvL l
left outer join tInvH h on h.InvH_Id = l.InvH_Id
left outer join tItem i on i.Item_Id = l.Item_Id
left outer join tItemUnit iu on iu.ItemUnit_Id = l.ItemUnit_Id
left outer join tUnit u on u.Unit_Id = iu.Unit_Id
left outer join tClientObj clo on clo.ClientObj_Id = h.ClientObj_Id
left outer join tDocType dt on dt.DocType_Id = h.DocType_Id
where h.CompanyObj_Id = (select CompanyObj_Id from tEnabledCompany where CompanyClientObj_Id=(select ClientObj_Id from tClientObj where ClientObj_Code = '504'))
and dt.DocType_InOut = 1
and l.Item_Id = 19558
and h.ClientObj_Id = 386
order by InvH_DocDate desc, InvH_DocTime desc
我收到错误消息: 遇到除以零错误。
我不明白为什么我在 order by 而不是例如在 select 语句中收到此错误...
【问题讨论】:
-
(InvBuyPriceValue/InvL_Quantity) 在除以顺序之前检查此值。你应该看看发生了什么。
-
因为没有 order by,它可以只取它为结果集计算的第一行,并且(可能)该行偶然包含非零
InvL_Quantity和iu.ItemUnit_MainUnitQuantity值。但是,当您添加ORDER BY时,必须生成更多行,并且其中一个或多个包含上述一个或两个值的零值。
标签: sql sql-server