1

我以前使用过这里的答案来回答我的问题,但我找不到这个问题的答案。

我正在编写一个查询,该查询需要提取驱动程序的滴数。相当直截了当,但是我需要将它们加在一起才能得出总数,但是当我使用 SUM 功能时,它不会返回正确的信息。

在表 Journey Header 是一个包含 Number of Drops 的列,我需要将它们相加得出一个总数,它确实如此,但我需要我的查询来显示 Driver、Vehicle、Total number of Drops 和一个订单值,但我不希望每个单独的记录,我希望它们全部组合在一起,如果这有意义的话......

下面是我正在使用的脚本和下面的部分结果 - 例如,我希望司机 Chris 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
4

2 回答 2

2

通过例如从Jh.NoOfDrops, JH.JourneyID组中删除JourneyIDselect

Group by JH.DriverName, VT.Name
于 2012-10-09T10:19:11.687 回答
2

即使编写了正确的 SQL,您的结果也总是不正确的。由于您添加了with (NOLOCK)提示,因此您要求执行脏读,您将获得不一致的数据。如果使用 NOLOCK 提示,请参阅先前提交的行可能会丢失。

现在,如果你愿意放弃“给我错误结果”的提示,那么你就有机会了。但为了实现这一点,您的要求不能自相矛盾。当您说I want the driver Chris Akwuba to show one line您显然不能要求JourneyID列时。您必须下定决心,要么每个司机一排,要么每个旅程一排。不是都。一旦你解决了其中一个问题,请重新提出问题。

于 2012-10-09T12:17:49.030 回答