Rapor için yapmaya çalıştığım bir select ifadem var. Verileri ve ihtiyaç duyduğum her şeyi almam var ama fark ettim ki grubu kullanmam gerektiğinden, bir tabloda bulunmayan satırları bırakıyor. Bunu nasıl durdurabilirim veya çalışmasını sağlayabilirim.Kasa sql çalışmıyor
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;
Bu çalışır ve kullanıcı sadece sayfaları sonuç olarak o satırı siler komisyoncu hedefleri değilken kullanıcı, BrokerGoals olduğunu ancak tüm verileri yakalar. Kullanıcı, bu değeri 0 olarak ayarlamak için brokergoals tablosunda bulunmadığında veya satır silinmediği için nasıl alabilirim? senin broker varsa, bir brokers
tablo o zaman left join
SELECT b.broker_id, ....
FROM brokers b
LEFT JOIN .... ALL YOUR OTHER TABLES
....
GROUP BY b.broker_id, ....
için kullanabilirsiniz varsa
Sorun, bir aditional 'LEFT JOIN''e ihtiyacınız var. Sadece birkaç dakika önce neredeyse aynı soruyu cevapladım. Bu yardımın http://stackoverflow.com/a/36317252/3470178 –
veritabanında yeni bir tablo oluşturmak için izinlerim olmadığını bildirin. Zaman zaman kullanıcılar broker hedefleri vardır bazen onlar ofiste olup olmadığına bağlı değil ama onlar broker hedefleri bir değer yoksa hala o 0 göstermelidir. –