Как сгенерировать этот SQL-запрос? - PullRequest
0 голосов
/ 12 мая 2009

«0» - VisitingCount --- числовое значение Datepart, например: 00: 00--1, 00: 30--2, 01: 00--2, 01: 30--3


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


select Sum(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_SecuristLog.Date 

Мой запрос возвращается ниже таблицы


0   1<br>
0   2<br>
..(removed repeating)..<br>
0   45<br>
0   46<br>
0   47<br>
825 23<br>
526 21<br>
1064    24<br>
885 22<br>



Это стол моей мечты. мне это нужно:



0   1<br>
0   2<br>
..(removed repeating)..<br>
0   19<br>
0   20<br>
526 21<br>
885 22<br>
825 23<br>
1064    24<br>
0   25<br>
0   26<br>
..(removed repeating)..<br>
0   46<br>
0   47<br>

1 Ответ

3 голосов
/ 12 мая 2009

добавьте Order By 2 desc к вашему выбору

  select Sum(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 desc

См. Пример A из UNION (Transact-SQL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...