我之前使用过这里的答案来回答我的问题,但我找不到这个问题的答案。
我正在编写一个需要提取驱动程序产生的丢弃量的查询。相当直接,但是我需要将它们添加到一起以提供总计,但是当我使用SUM功能时它不会返回正确的信息。
在桌子上Journey Header是一个包含Drop of Drop的列,我需要将它们添加到总数中,但它需要我的查询来显示驱动程序,车辆,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
答案 0 :(得分:2)
从Jh.NoOfDrops, JH.JourneyID
和JourneyID
中删除select
例如
Group by JH.DriverName, VT.Name
答案 1 :(得分:2)
即使如果你编写了正确的SQL,你的结果也总是不正确的。由于您添加了with (NOLOCK)
提示,因此您要求执行脏读操作,以获得不一致的数据。请参阅Previously committed rows might be missed if NOLOCK hint is used。
现在,如果你愿意放弃'gimme错误结果'的暗示,那么你就有了机会。但为了实现这一点,您的要求不得与自己相矛盾。当您说I want the driver Chris Akwuba to show one line
时,您显然无法要求JourneyID
列。你必须下定决心,每个旅程一行或每行一行。不是都。一旦你解决了其中一个问题,请重新提问。