将表连接在一起时,每种可能的组合都会得到一行。因此,如果一个工作订单有3个工作行和4个项目行,则三个表的联接将返回12行。
避免这种情况的一种方法是
group by在子查询中处理工作订单:
SELECt WORKORDER.WONUM, LONGDEscriptION.LDTEXT, ... other columns ..., Labor.LaborCost, Item.ItemCostFROM MAXIMO.WORKORDERLEFT JOIN MAXIMO.LONGDEscriptIonON 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.WonUMLEFT JOIN ( SELECt WonUM , SUM(WPITEM.ITEMQTY * WPITEM.UNITCOST) as ItemCost FROM MAXIMO.WPITEM GROUP BY WOWNUM ) ItemON WORKORDER.WonUM = Item.WONUM



