我試圖使用聯接兩個表下面的SQL Server查詢返回的預測接口.NET數據表:右外連接未返回預期行?
SELECT accounts.AccountID
,accounts.Account
,SUM(CASE
WHEN forecast.omonth = 1
THEN forecast.ns1
ELSE 0
END)/1 Jan
,SUM(CASE
WHEN forecast.omonth = 2
THEN forecast.ns1
ELSE 0
END)/1 Feb
,SUM(CASE
WHEN forecast.omonth = 3
THEN forecast.ns1
ELSE 0
END)/1 Mar
,SUM(CASE
WHEN forecast.omonth = 4
THEN forecast.ns1
ELSE 0
END)/1 Apr
,SUM(CASE
WHEN forecast.omonth = 5
THEN forecast.ns1
ELSE 0
END)/1 May
,SUM(CASE
WHEN forecast.omonth = 6
THEN forecast.ns1
ELSE 0
END)/1 Jun
,SUM(CASE
WHEN forecast.omonth = 7
THEN forecast.ns1
ELSE 0
END)/1 Jul
,SUM(CASE
WHEN forecast.omonth = 8
THEN forecast.ns1
ELSE 0
END)/1 Aug
,SUM(CASE
WHEN forecast.omonth = 9
THEN forecast.ns1
ELSE 0
END)/1 Sep
,SUM(CASE
WHEN forecast.omonth = 10
THEN forecast.ns1
ELSE 0
END)/1 Oct
,SUM(CASE
WHEN forecast.omonth = 11
THEN forecast.ns1
ELSE 0
END)/1 Nov
,SUM(CASE
WHEN forecast.omonth = 12
THEN forecast.ns1
ELSE 0
END)/1 Dec
FROM accountForecast forecast
RIGHT OUTER JOIN account_tree accounts ON forecast.AccountID = accounts.AccountID
WHERE forecast.oYear = 2014
AND accounts.AccountID in (35, 36, 37, 38, 39, 40, 41, 78, 79, 80, 81, 1, 82, 176)
GROUP BY accounts.AccountID
,accounts.Account
的accountForecast表的結構如下:
該查詢應即使給定帳戶在accountForecast表中沒有條目,也會爲WHERE子句(35,36,37等)中的所有帳戶ID返回一行,在這種情況下查詢應該返回0。
我的查詢當前只返回一行,其中包含已插入accountForecast表中的AccountID。我連接不正確?我應該改變什麼?
編輯:我刪除了forecast.oYear = 2014
WHERE子句,它似乎按預期工作。但是,重要的是這個查詢需要輸入年份參數,因爲數據取決於它。有沒有辦法在指定年份的時候返回所有的賬戶行?
是怎麼account_tree表設置?還有,哪個版本的sql? –