【发布时间】:2021-03-22 22:10:04
【问题描述】:
我试图让我的查询在 WO 分组中平均一列,这样我就可以摆脱影响另一列计算的重复项。一点背景 - 在这个数据集中,一个工作订单可以有一个或多个签入/签出组合。旅行/准备时间记录在 WO 级别,但是我需要我的数据在更精细的个人入住/退房组合级别。
我遇到的问题是,工作订单的每个签入/签出组合都会重复旅行时间,这夸大了实际时间。我希望有人可以帮助我弄清楚a)如何平均整个组的旅行时间或b)将重复的实例更改为Null或零,以便我可以获得准确的时间。在所附链接的示例中,您可以看到工作订单“PGE083300001”重复计算了这两种不同入住/退房组合的旅行时间。 7.5 hrs 是工单的总时间,但该列应显示两个条目的时间为 3.75。
SQL 语句如下:
SELECT
a.WorkOrderCustomID,
b.[Work Order #],
b.[checkIn Date],
b.[checkOut Date],
CONVERT(decimal (16,2),[Windshield/Travel/Prep Time (Hours)]) AS TravelPrepAvg
FROM clientssdv.vw_Corrigo_WorkOrder_Custom a
INNER JOIN ssdv.vw_Corrigo_vbiWorkOrderCheckInOuts b on a.WorkOrderCustomID = b.[Work Order ID]
INNER JOIN ssdv.vw_Corrigo_vbiWorkOrders c ON b.[Work Order ID] = c.ID
WHERE Status <> 'Cancelled'
ORDER BY [Work Order ID]
[
【问题讨论】:
-
这里的大多数人希望样本表数据和预期结果为格式化文本,而不是图像(也不是图像链接)。如果可能的话,请简化 - minimal reproducible example。跨度>
-
哇,为什么 7.5 应该平均分配在两个条目上?您需要向我们展示
Windshield、Travel和Prep Time (hours)的值,而我们可以在这里推测,将原始输入输入到您的等式中会有所帮助 -
下次我会记住这一点。我能够通过使用滞后功能并将重复项变为空来解决此问题。感谢您的回复。
标签: sql group-by grouping average