1
我有一个查询哪些联盟的两个单独的查询具有相同的字段/数据类型。查询如下:是如何总结和分组通过联盟选择查询的结果
SELECT BusinessUnitName, BuildingNumber, Description, Value_1,
LifeRemaining, Sum_Quant
FROM
(
SELECT bu.BusinessUnitName, b.BuildingNumber, ec.Description, SUM(cc.MonetaryValue) AS Value_1,
cc.LifeRemaining, SUM(a.Quantity) AS Sum_Quant
FROM tbBuildingLinkBusinessUnit as blb INNER JOIN
tbBusinessUnit as bu ON blb.BusinessUnitID = bu.BusinessUnitID INNER JOIN
tbBuilding as b ON blb.BuildingID = b.BuildingID INNER JOIN
tbFloor ON b.BuildingID = tbFloor.BuildingID INNER JOIN
tbRoom as r ON tbFloor.FloorID = r.FloorID INNER JOIN
tbConditionComponent as cc INNER JOIN
tbAsset as a ON cc.ParentID = a.AssetUID INNER JOIN
tbElement as e ON cc.ElementID = e.ElementID AND a.ElementID = e.ElementID INNER JOIN
tbElementCategory as ec ON e.ElementCategoryID = ec.ElementCategoryID ON r.RoomID = a.LocationID
WHERE (cc.MonetaryValue > 0)
GROUP BY bu.BusinessUnitName, b.BuildingNumber, ec.Description, a.Status, cc.LifeRemaining
HAVING (a.Status = 0)
UNION
SELECT bu.BusinessUnitName, b.BuildingNumber, ec.Description, SUM(cc.MonetaryValue) AS Value_1,
cc.LifeRemaining, SUM(a.Quantity) AS Sum_Quant
FROM tbBuildingLinkBusinessUnit as blb INNER JOIN
tbBusinessUnit as bu ON blb.BusinessUnitID = bu.BusinessUnitID INNER JOIN
tbBuilding as b ON blb.BuildingID = b.BuildingID INNER JOIN
tbConditionComponent as cc INNER JOIN
tbAsset as a ON cc.ParentID = a.AssetUID INNER JOIN
tbElement as e ON cc.ElementID = e.ElementID AND a.ElementID = e.ElementID INNER JOIN
tbElementCategory as ec ON e.ElementCategoryID = ec.ElementCategoryID ON b.BuildingID = a.LocationID
WHERE (cc.MonetaryValue > 0)
GROUP BY bu.BusinessUnitName, b.BuildingNumber, ec.Description, a.Status, cc.LifeRemaining
HAVING (a.Status = 0)
) AS x
ORDER BY BusinessUnitName, Description
个体选择查询的结果与前两行从查询1来与第二两条线从查询2来如下:
TEST PROPERTY | 1/A |电气服务| 515.82 | 0 | 3
TEST PROPERTY | 1/A |电气服务| 125 | 1 | 2
TEST PROPERTY | 1/A |电气服务| 381.6 | 0 | 8
TEST PROPERTY | 1/A |电气服务| 80615.93 | 5 | 7
我的问题是我怎么现在合并这两个查询的结果,以便这两个查询的第一个结果执行一个SUM,因为它们都在列5中的值为0?这将导致3行结果与第1行和第3行相结合。
在此先感谢
谢谢,我现在试试 – 2014-10-29 12:16:40
我收到以下错误: 消息8120,级别16,状态1,行1 列'Derived.BusinessUnitName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句。 如果我通过获得相同的结果包含派生组中的选择字段? – 2014-10-29 12:21:17
在group by子句中包含BusinessUnitName列,它解决了问题 – SDK 2014-10-29 12:25:16