2012-10-09 44 views
1

我已经使用这里的答案来回答我的问题,但我找不到这个问题的答案。使用SUM返回的数据不会显示正确

我正在写一个查询,需要提取驱动程序产生多少滴。相当直接,但是我需要将它们加在一起给出总数,但是当我使用SUM功能时,它不会返回正确的信息。

桌上Journey Header是一个有多少滴的列,我需要添加这些以得到一个总数,但是我需要我的查询来显示驱动程序,车辆,滴总数和一个订单价值,但我不希望每个个人的记录,我希望他们都聚集在一起,如果这是有道理的...

下面是我正在使用的脚本和下面的结果的一部分 - 例如,我想驱动程序克里斯Akwuba显示一行,与他已完成的订单价值(订单价值正在工作)的总滴数

谢谢,我希望你能理解我的漫谈....

select 
sum(JH.NoofDrops) as [Number of Drops], 
Jh.JourneyID, 
JH.DriverName as [Driver], 
VT.Name as [Vehicle Class], 
SUM (OH.TotalSellPrice) as [Order Value] 
from JourneyHeader JH with (NOLOCK) 
LEFT JOIN VehicleType VT with (NOLOCK) on VT.VehicleTypeID=JH.VehicleTypeID 
LEFT JOIN JourneyLine JL with (NOLOCK) on JL.JourneyID=JH.JourneyID 
LEFT JOIN Orderheader OH with (NOLOCK) on OH.OrderID=JL.OrderID 
where 
JourneyDate between '2012-06-01 00:00:00' and '2012-07-20 00:00:00' 
Group by JH.DriverName, VT.Name, Jh.NoOfDrops, JH.JourneyID 

Number of Drops JourneyID  Driver   Vehicle Class Order Value 
25   14520    Chris Akwuba  Transit   2533.32 
1   14521    Kevin O'Sullivan Hiab (Class2) 214.15 
16   14522    Kevin O'Sullivan Hiab (Class2) 1672.29 
9   14523    Chris Akwuba  Transit   1136.69 
16   14525    James O'Brien  7.5 tonne   633.18 
9   14526    Errol Gray   Transit   768.17 
25   14527    John Hardy   Transit   969.80 

回答

2

从GROUP BY和JourneyID从删除Jh.NoOfDrops, JH.JourneyIDselect

Group by JH.DriverName, VT.Name 
+0

非常感谢你的快速反应,在 – user1731335

+0

@ user1731335工作现场:如果工作,将其标记为答案朋友。 –

2

即使你写正确的SQL ,您的结果将是不正确的,总是如此。由于您添加了with (NOLOCK)提示,因此您要求执行肮脏的读取操作,以获取不一致的数据。见Previously committed rows might be missed if NOLOCK hint is used

现在,如果你愿意抛弃'给我错误结果'的提示,那么你有一个站立的机会。但为了实现这一点,您的要求不得与自己抵触。当你说I want the driver Chris Akwuba to show one line你显然不能要求JourneyID列。您必须下定决心,每行程驱动程序一行一行。不是都。一旦你解决其中的一个,重新提出这个问题。