我有一個查詢如何聯合彙總查詢?
SELECT
CntApp = COUNT(app.ApplicationID)
,r.RegionName
,d.DistrictName
FROM dim.Application app
JOIN dim.Geography g ON (app.ApplicationID = g.GeographyID)
AND (app.CountryId = g.CountryId)
JOIN dim.Region r ON r.RegionID = g.RegionID
JOIN dim.District d ON d.DistrictId = g.DistrictID
JOIN dim.ZIPcode z ON g.ZIPcodeID = z.ZIPcodeID
GROUP BY
r.RegionName
,d.DistrictName
和
SELECT
CntCon = COUNT(c.ContractID)
,r.RegionName
,d.DistrictName
FROM dim.Contract c
JOIN dim.Geography g ON (c.ContractID = g.GeographyID)
AND (c.CountryId = g.CountryId)
JOIN dim.Region r ON r.RegionID = g.RegionID
JOIN dim.District d ON d.DistrictId = g.DistrictID
JOIN dim.ZIPcode z ON g.ZIPcodeID = z.ZIPcodeID
GROUP BY
r.RegionName
,d.DistrictName
,我要合併到一個表,所以在GROUP BY仍然有效。 結果我想:
CntApp | CntCon | RegionName | DistrictName
31 24 Pardubicky Pardubice
21 16 Pardubicky Chrudim
...
我試過UNION ALL卻得到了這樣的事情,而不是:
CntApp | CntCon | RegionName | DistrictName
NULL 24 Pardubicky Pardubice
21 NULL Pardubicky Pardubice
26 NULL Pardubicky Chrudim
...
Appereantly,StackOverflow上認爲我應該包括更多的文字(「它看起來像你的崗位主要是代碼,請添加一些更多的細節「),所以在這裏它是:
,-""-.
:======:
:======;
`-.,-'
||
_,''--. _____
(/ __ `._|
((_/_)\ |
(____)`.___|
(___)____.|_____
SSt
所以,你得到了什麼呢,當你UNION這一切? (好的繪畫+1和幽默感;) –
@Rafal:看編輯。 –
當查詢幾乎完全相同時,您可以通過不進行UNION來優化您的查詢;你有效地要求數據庫加入同一組表並計算兩次。有辦法避免這種情況...(我發佈了一個無聯合答案作爲替代) –