Как можно оценить более одного раза данные из запроса? - PullRequest
0 голосов
/ 12 мая 2009
CREATE TABLE #Temp (VisitingCount int, [Time] int )
DECLARE @DateNow DATETIME,@i int,@Time int
set @DateNow='00:00'  
set @i=1;  
while(@i<48)  
    begin  
        set @DateNow = DATEADD(minute, 30, @DateNow)
        set @Time = (datepart(hour,@DateNow)*60+datepart(minute,@DateNow))/30 
        insert into #Temp(VisitingCount,[Time]) values(0,@Time )
        set @i=@i+1
    end<br><hr>
select Sum(VisitingCount)as VisitingCount, [Time]
  from #Temp group by [Time]
Union All
  select count(page) as VisitingCount, 
  (datepart(hour,Date)*60+datepart(minute,Date))/30 as [Time]
  from scr_SecuristLog
  where Date between '2009-05-04 10:30' and '2009-05-04 12:30'
  GROUP BY (datepart(hour,Date)*60+datepart(minute,Date))/30--scr
  order by 2 asc

Этот запрос создает мне эту таблицу, но если вы посмотрите ниже, «22» повторяется два раза. в этой ситуации. я должен сбросить 0 значение. мне нужно

VisitingCount ------------ Время ----------
Повторяя ------------------ повторив -----
Повторяя ------------------ повторив -----
Повторяя ------------------ повторив -----
526 ----------------------- 21 ----------
0 -------------------------- 22 ----------
0 -------------------------- 22 ----------
0 -------------------------- 23 ----------
825 ------------------------ 23 ----------
Повторяя ------------------ повторив -----
Повторяя ------------------ повторив -----

мне нужна эта таблица

VisitingCount ------------ Время ----------
Повторяя ------------------ повторив -----
Повторяя ------------------ повторив -----
Повторяя ------------------ повторив -----
526 ----------------------- 21 ----------
0 -------------------------- 22 ----------
825 ------------------------ 23 ----------
Повторяя ------------------ повторив -----
Повторяя ------------------ повторив -----

1 Ответ

1 голос
/ 12 мая 2009

Создайте еще один уровень вложенности:

select Sum(VisitingCount)as VisitingCount, [Time]
from (
  select Sum(VisitingCount)as VisitingCount, [Time]
    from #Temp group by [Time]
  Union All
    select count(page) as VisitingCount, 
    (datepart(hour,Date)*60+datepart(minute,Date))/30 as [Time]
    from scr_SecuristLog
    where Date between '2009-05-04 10:30' and '2009-05-04 12:30'
    GROUP BY (datepart(hour,Date)*60+datepart(minute,Date))/30--scr
  ) X
group by [Time]
order by 2 asc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...