Sql 查询帮助:汇总某些组的视图
我正在寻找一种正确的方法来构造视图的查询,以便在DB端包含一些合计等内容(该视图将由报表系统使用) 相关数据结构 目标 我想退回以下文件:Sql 查询帮助:汇总某些组的视图,sql,oracle,maximo,Sql,Oracle,Maximo,我正在寻找一种正确的方法来构造视图的查询,以便在DB端包含一些合计等内容(该视图将由报表系统使用) 相关数据结构 目标 我想退回以下文件: 工作订单中的各种项目 所有人工成本的总和(每个人工小时的总和*费率) 所有项目的总和(每个项目的总和数量*单位成本) 文本CLOB 我已经到了可以在查询中显示相关信息的地步,但是我正在努力计算人工和项目成本的总和 迄今为止的查询 谢谢你能给我的帮助 将表连接在一起时,每个可能的组合将得到一行。所以,若一个工单有3个人工行和4个项目行,则三个表的联接将返回
- 工作订单中的各种项目
- 所有人工成本的总和(每个人工小时的总和*费率)
- 所有项目的总和(每个项目的总和数量*单位成本)
- 文本CLOB
谢谢你能给我的帮助 将表连接在一起时,每个可能的组合将得到一行。所以,若一个工单有3个人工行和4个项目行,则三个表的联接将返回12行 避免这种情况的一种方法是在子查询中按工作顺序分组:
SELECT WORKORDER.WONUM
, LONGDESCRIPTION.LDTEXT
, ... other columns ...
, Labor.LaborCost
, Item.ItemCost
FROM MAXIMO.WORKORDER
LEFT JOIN
MAXIMO.LONGDESCRIPTION
ON WORKORDER.WONUM = CAST(LONGDESCRIPTION.LDKEY as varchar(22))
LEFT JOIN
(
SELECT WONUM
, SUM(WPLABOR.LABORHRS * WPLABOR.RATE) as LaborCost
FROM MAXIMO.WPLABOR
GROUP BY
WOWNUM
) Labor
ON WORKORDER.WONUM = Labor.WONUM
LEFT JOIN
(
SELECT WONUM
, SUM(WPITEM.ITEMQTY * WPITEM.UNITCOST) as ItemCost
FROM MAXIMO.WPITEM
GROUP BY
WOWNUM
) Item
ON WORKORDER.WONUM = Item.WONUM
你能稍微澄清一下设计吗。WPLabor是否包含一个或多个需要“汇总”的记录,并且项目相同。感谢您提供的出色且全面的答案!提醒一下:我不确定这是否合乎道德,但我编辑了您的SQL,通过在上找到的答案解决了我遇到的一个问题。这是一个很好的答案,而且是一个快速的细节,所以我想我应该自己修改一下。再次感谢!
SELECT
WORKORDER.WONUM,
WORKORDER.ACTLABHRS,
WORKORDER.LOCATION,
WORKORDER.STATUS,
WORKORDER.WO7, -- Requester
WORKORDER.WO8, -- Extension
WORKORDER.WO9, -- Location
WORKORDER.LEADCRAFT,
WORKORDER.WO11, -- Extension
WORKORDER.GLACCOUNT,
WORKORDER.WO10, -- Contact
WORKORDER.DESCRIPTION, -- Short description
WORKORDER.WO6, -- Plant rearrangement (YORN / boolean value)
LONGDESCRIPTION.LDTEXT,
WPLABOR.LABORHRS,
WPLABOR.RATE,
WPITEM.ITEMQTY,
WPITEM.UNITCOST
FROM
MAXIMO.WORKORDER
LEFT OUTER JOIN
MAXIMO.LONGDESCRIPTION
ON WORKORDER.WONUM = CAST(LONGDESCRIPTION.LDKEY as varchar(22))
LEFT OUTER JOIN
MAXIMO.WPLABOR
ON WORKORDER.WONUM = WPLABOR.WONUM
LEFT OUTER JOIN
MAXIMO.WPITEM
ON WORKORDER.WONUM = WPITEM.WONUM
WHERE
LONGDESCRIPTION.LDOWNERTABLE='WORKORDER' AND
LONGDESCRIPTION.LDOWNERCOL = 'DESCRIPTION';
SELECT WORKORDER.WONUM
, LONGDESCRIPTION.LDTEXT
, ... other columns ...
, Labor.LaborCost
, Item.ItemCost
FROM MAXIMO.WORKORDER
LEFT JOIN
MAXIMO.LONGDESCRIPTION
ON WORKORDER.WONUM = CAST(LONGDESCRIPTION.LDKEY as varchar(22))
LEFT JOIN
(
SELECT WONUM
, SUM(WPLABOR.LABORHRS * WPLABOR.RATE) as LaborCost
FROM MAXIMO.WPLABOR
GROUP BY
WOWNUM
) Labor
ON WORKORDER.WONUM = Labor.WONUM
LEFT JOIN
(
SELECT WONUM
, SUM(WPITEM.ITEMQTY * WPITEM.UNITCOST) as ItemCost
FROM MAXIMO.WPITEM
GROUP BY
WOWNUM
) Item
ON WORKORDER.WONUM = Item.WONUM