2009-05-08 7 views
2

J'essaie de générer une table (voir le TABLEAU 1) avec la requête (ci-dessous).Comment puis-je laisser de côté joindre ces #temp (données par défaut) et une autre table?

CREATE TABLE #temp(
[VisitingCount] int, 
[Time] nvarchar(50)) 
DECLARE @DateNow DATETIME,@i int 

SET @DateNow='00:00' 
set @i=1; 


    while(@i<1440) 
begin 
    set @DateNow=DATEADD(minute, 1, @DateNow) 
    insert into #temp ([VisitingCount], [Time]) values(0, right(left(convert(nvarchar, @DateNow, 121), 16), 5)) 
    set @[email protected]+1 
end 


select Count(VisitingCount) as VisitingCount,[Time]  
from 
#temp as Alltimes 
left outer join 
(SELECT Page,Date,[user],  
     dbo.fn_GetActivityLogArranger2(Date,'hour') as [Time] 
     FROM scr_SecuristLog  
) scr_SecuristLog  
on Alltimes.[Time] = scr_SecuristLog.[Time] 
where  
     Date between '2009-04-30' and '2009-05-02'  
and  
     [user] in  
(  select USERNAME  
     from scr_CustomerAuthorities  
     where customerID=Convert(varchar,4)  
     and ID=Convert(varchar,43)  
)  
group by [Time] order by [Time] asc 
drop table #temp




i besoin de ce résultat (ci-dessous). Ce code concerne les journaux d'entrée du système, , mais il y a un déjeuner de pause entre 12h30 et 13h30. Donc, pas d'entrée notre système entre 12h30 et 13h30. si vous dessinez un journal Graghic. Vous pouvez voir le caractère "M" en raison de l'écart de breaklunch

My Dream Tableau 1 Résultat:

comte --------- temps ---------
10-- ---------- 10:30
22 ------------ 10:40
30 ------------ 10:50
44 ------------ 11:00
.
.
.
.
.
0 ------------- 12:30
0 ------------- 12:40
0 --------- ---- 12:50
0 ------------- 13:00
.
.
.
.
.
10 ------------- 16:00
21 ------------- 16:10
56 --------- ---- 16:20
46 ------------- 16:30

Répondre

2

C'est votre clause where, ce qui filtre les plages de temps. Vous devez définir cette clause pour sélection intérieure:

select Count(VisitingCount) as VisitingCount,[Time]  
from 
#temp as Alltimes 
left outer join 
(SELECT Page,Date,[user],  
     dbo.fn_GetActivityLogArranger2(Date,'hour') as [Time] 
     FROM scr_SecuristLog  
     where Date between '2009-04-30' and '2009-05-02'  
     and  
     [user] in  
     (  select USERNAME  
       from scr_CustomerAuthorities  
       where customerID=Convert(varchar,4)  
       and ID=Convert(varchar,43)  
     )  
) scr_SecuristLog  
on Alltimes.[Time] = scr_SecuristLog.[Time] 
group by [Time] order by [Time] asc 
+0

+1, l'où jette toutes les lignes où la [USER] est pas dans la sous-requête, en particulier ceux où il n'y a pas de données scr_SecuristLog! –

Questions connexes