This is a SQL SELECT Statement that is joining 3 tables. Please tell me what do you think to make it quicker and faster. Let me know what you think about this confusing subject of SQL joins!
Thanks
Scott @ http://scottalvarino.com
select –*,
Unit_Name, Caller, Callee, Group_name as “GroupNombre”, –Unique_Id, –Group_name as “GroupNombre”,
c.Call_Type,
e.Description,
– convert(char(15),Event_At,120) “DATE& TIME”,
convert(varchar,Event_At,111) “DATE”
– convert(char(13),Event_At,120) “DATE& TIME”, Caller,
–$$$$$$*********CALL TYPE AREA**********************************************
– SUM(CASE call_type WHEN 0 THEN 1 ELSE 0 END) “GROUP CALLS”, — THIS IS GROUP CALLS
– SUM(CASE call_type WHEN 1 THEN 1 ELSE 0 END) “I CALLS”,
– SUM(CASE call_type WHEN 2 THEN 1 ELSE 0 END) “EMERGENCYS”,
– SUM(CASE call_type WHEN 3 THEN 1 ELSE 0 END) “SYSTEM ALL”,
– SUM(CASE call_type WHEN 4 THEN 1 ELSE 0 END) “MORSE CODE”,
– SUM(CASE call_type WHEN 5 THEN 1 ELSE 0 END) “TEST CALLS”,
– SUM(CASE call_type WHEN 6 THEN 1 ELSE 0 END) “PAGING CALLS”,
– SUM(CASE call_type WHEN 7 THEN 1 ELSE 0 END) “SCRAMBLE DATA”,
– SUM(CASE call_type WHEN 8 THEN 1 ELSE 0 END) “LOGINS”, — THIS IS GROUP SETS
– SUM(CASE call_type WHEN 9 THEN 1 ELSE 0 END) “SYSTEM LOGIN”,
– SUM(CASE call_type WHEN 10 THEN 1 ELSE 0 END) “START EMERG”,
– SUM(CASE call_type WHEN 11 THEN 1 ELSE 0 END) “CANCEL EMERG”,
–$$$$$$*********CALL STATE AREA*********************************************
– SUM(CASE call_state WHEN 0 THEN 1 ELSE 0 END) “All CALLS”,
– SUM(CASE call_state WHEN 1 THEN 1 ELSE 0 END) “DROPPED CALLS”,
– SUM(CASE call_state WHEN 2 THEN 1 ELSE 0 END) “KEYED”,
– SUM(CASE call_state WHEN 3 THEN 1 ELSE 0 END) “UnKeyed”,
– SUM(CASE call_state WHEN 4 THEN 1 ELSE 0 END) “DIGITS”,
– SUM(CASE call_state WHEN 5 THEN 1 ELSE 0 END) “OVER DIGITS”,
– SUM(CASE call_state WHEN 6 THEN 1 ELSE 0 END) “QUEUE”,
– SUM(CASE call_state WHEN 7 THEN 1 ELSE 0 END) “BUSY”,
—- SUM(CASE call_state WHEN 8 THEN 1 ELSE 0 END) “DENY”,
– SUM(CASE call_state WHEN 9 THEN 1 ELSE 0 END) “Cnv to CALLEE”,
– SUM(CASE call_state WHEN 10 THEN 1 ELSE 0 END) “DEQUEUE”,
– Count(Caller) As CountS
From Log_activity_localtime c
Left Outer Join Unit ON c.caller = Unit.Unique_Id
LEFT OUTER JOIN Groups ON c.callee = groups.Unique_Id
Inner Join dbo.Enum_Call_Type e On c.Call_type = e.Call_Type
– From Log_activity_localtime c
– LEFT OUTER JOIN Groups ON c.callee = groups.Unique_Id
Where
– convert(char(15),Event_At,111) between ‘2010/05/11′ and ‘2010/05/12′
– event_at between ‘2010-05-11 00:00:00.000′ and ‘2010-05-13 00:00:00.000′
convert(varchar,Event_At,111) between ‘2010/05/11′ and ‘2010/05/14′
and (caller = 3394
or callee = 3394)
–GROUP BY
– convert(varchar,Event_At,111) — DAY
– convert(char(13),Event_At,120)– HOUR
– convert(char(15),Event_At,120)– HOUR/MIN
– , Caller
Comments
Leave a comment Trackback