【发布时间】:2016-08-05 13:15:25
【问题描述】:
我想为下面的查询按OrderNumber、Product、ConveyanceID 和Trip 分组,但我想检索所有这些列,最后是sum(Volume)。
举个例子
SELECT
OD.[Customer]
,OD.[OrderNumber] 'Order#'
,OD.[Shipper]
,OD.[Product]
,OD.[Dock] 'Dock/Track'
,OD.[Lines] 'Berth/Position'
,[TAMS].[fnc_GetDelayCountByOrderNumber](OD.OrderNumber) 'Delays'
,OD.[ScheduledArrival] 'Sched .Arrival'
,OD.ActiveCheckPointStatus 'Active CheckPoint'
,OD.[CheckPointStatus] 'CheckPoint Status'
,OD.[ContractNumber]
,OD.[Direction]
,SUM(OD.[Volume]) 'Volume'
,OD.[PreviousCheckPointStatus]
,OD.[CheckPointType]
,OD.[SourceContainer]
,OD.[DestinationContainer]
,OD.[UnitsOfMeasure]
,OD.ConveyanceID
,OD.TripId
,OD.NumberOfConveyance
FROM
TAMS.OrderDetail OD
WHERE
OrderNumber = 8394
GROUP BY
PRODUCT, Ordernumber, ConveyanceID, TripID
我该怎么做?
SELECT
OD.[Customer]
,OD.[OrderNumber] 'Order#'
,OD.[Shipper]
,OD.[Product]
,OD.[Dock] 'Dock/Track'
,OD.[Lines] 'Berth/Position'
,[TAMS].[fnc_GetDelayCountByOrderNumber](OD.OrderNumber) 'Delays'
,OD.[ScheduledArrival] 'Sched .Arrival'
,OD.ActiveCheckPointStatus 'Active CheckPoint'
,OD.[CheckPointStatus] 'CheckPoint Status'
,OD.[ContractNumber]
,OD.[Direction]
,OD.[Volume]
,OD.[PreviousCheckPointStatus]
,OD.[CheckPointType]
,OD.[SourceContainer]
,OD.[DestinationContainer]
,OD.[UnitsOfMeasure]
,OD.ConveyanceID
,OD.TripId
,OD.NumberOfConveyance
FROM
TAMS.OrderDetail OD
WHERE
OrderNumber = 8394
【问题讨论】:
-
如果您想按这四列分组,那么您需要选择所有其他列吗?
-
是的,我想为这四列分组并选择所有其他列
-
如果不在 group by 中的其他列之一具有不同的值会发生什么?因此,例如,如果我们有一个 id 为 1 的用户。我们按此分组。但是可以说我们正在保存用户的操作。如果我们按用户 ID 分组,那么不同的操作会发生什么?您也需要按此分组。这有意义还是我应该举一个更好的例子?关键是,你不能显示不在 groupby 中的东西是有原因的。如果您可以在不使用额外列的情况下摆脱困境,那么解决方案非常简单。
-
没关系。我想检索 Product、OrderNumber、ConveyanceID、TripID 数据相同的所有记录
-
@user1030181 请显示示例预期结果。用文字描述你想要什么只会导致混乱和沮丧。
标签: sql sql-server