在“选择不工作”中使用计算的SQL查询
此查询的目的是获取延迟订单占订单总数的百分比。因此,这个查询的计算部分只返回零。其他一切都可以。我对下面的部分进行了注释,该部分将返回零。我做错了什么在“选择不工作”中使用计算的SQL查询,sql,Sql,此查询的目的是获取延迟订单占订单总数的百分比。因此,这个查询的计算部分只返回零。其他一切都可以。我对下面的部分进行了注释,该部分将返回零。我做错了什么 SELECT case LM.DState WHEN 'OH' THEN 'OH Order' WHEN 'NC' THEN 'NC Order' WHEN 'TX' THEN 'TX Order' WHEN 'WA' THEN 'WA order'
SELECT
case LM.DState
WHEN 'OH' THEN 'OH Order'
WHEN 'NC' THEN 'NC Order'
WHEN 'TX' THEN 'TX Order'
WHEN 'WA' THEN 'WA order'
Else 'Other'
End as 'OrderType',
count(LM.OrderID) as 'Vol',
sum(case
WHEN datediff(day, S.Appt, S.Arrived) > 0 THEN 1
else 0
END) as 'TotalLates',
--PART THAT IS ONLY PULLING ZEROS, SHOULD BE NON-ZERO
CAST (
sum(case WHEN datediff(day, S.Appt, S.Arrived) > 0 THEN 1 else 0 END)
/ count(LM.OrderID)
as decimal(5,2)
) *100 as 'OTD%'
FROM ((Customers.dbo.CusOrders as LM WITH (NOLOCK) inner join
Customers.dbo.CusLocations as S WITH (NOLOCK) on LM.OrderID = S.OrderID) inner join
Customers.dbo.Loads as L with (NOLOCK) on LM.OrderID = L.OrderID)
WHERE LM.CusCode = 'Domestic'
GROUP BY case LM.DState
WHEN 'OH' THEN 'OH Order'
WHEN 'NC' THEN 'NC Order'
WHEN 'TX' THEN 'TX Order'
WHEN 'WA' THEN 'WA Order
Else 'Other'
End
这是由于整数除法会发生舍入,因为您计算的百分比值总是小于1,并且舍入为0,您可以通过将分子乘以1.0来解决此问题: 例如:
SELECT 5/7
--0
SELECT 5.0/7
--0.714285
你能发布一些样本数据吗?如果S.Appt和S.arrized之间的datadiff为0或不是0,则0似乎是一个潜在的有效响应,因为Totalates在其自己的列中拉取非零,但关键是您没有收到错误消息,您正在返回您不期望的数据。如果您需要帮助,可以查看示例输入和输出数据。
SELECT 5/7
--0
SELECT 5.0/7
--0.714285