我有一個select語句,我正在嘗試報告。我有它拉動數據和我需要的所有東西,但我注意到,因爲我必須使用該組,因此它將丟棄表中不存在的行。我該如何制止這種情況或使其發揮作用。病例sql不起作用
SELECT Sum(CASE WHEN direction = 'I' THEN 1 ELSE 0 END) InBound,
Sum(CASE WHEN direction = 'O' THEN 1 ELSE 0 END) OutBound,
Sum(CASE WHEN direction = 'I' THEN p.duration ELSE 0 END) InBoundTime,
Sum(CASE WHEN direction = 'O' THEN p.duration ELSE 0 END) OutBoundTime,
u.fullname,
(CASE
WHEN EXISTS (SELECT g.goalamount
FROM [tblbrokergoals] AS g
WHERE (g.goaldate BETWEEN
'2016-03-21' AND '2016-03-27'))
THEN
g.goalamount
ELSE 0
END) AS GoalAmount
FROM [tblphonelogs] AS p
LEFT JOIN [tblusers] AS u
ON u.fullname = p.phonename
LEFT OUTER JOIN [tblbrokergoals] AS g
ON u.fullname = g.brokername
WHERE (calldatetime BETWEEN '2016-03-21' AND '2016-03-27')
AND (u.userid IS NOT NULL)
AND (u.direxclude <> '11')
AND u.termdate IS NULL
AND (g.goaldate BETWEEN '2016-03-21' AND '2016-03-27')
GROUP BY u.fullname,
g.goalamount;
這工作,並抓住當用戶在BrokerGoals但是,當用戶不在經紀人的目標,它只是刪除返回的結果集行中的所有數據。如何在brokergoals表中不存在將該值設置爲0或 - 因此該行不會被刪除時如何獲取它。
問題是你需要一個附加的'LEFT JOIN'。我幾分鐘前剛剛回答幾乎完全相同的問題。讓我知道如果幫助http://stackoverflow.com/a/36317252/3470178 –
我沒有權限在數據庫中創建一個新表。有時用戶在經紀人的目標有時他們不取決於他們是否在辦公室,但如果他們沒有在經紀人的目標價值,它仍然應該顯示0. –