Как я могу сгруппировать по моим столбцам в SQL? - PullRequest
1 голос
/ 04 мая 2009

Как мне сгруппировать по времени? Я пробовал это, но выдает ошибку «Неверное имя столбца« Время ».»:

select Count(Page) as VisitingCount, CONVERT(VARCHAR(5), Date, 108) as [Time]
from scr_SecuristLog   
where Date between '2009-05-04 00:00:00' and '2009-05-06 14:58'  
and [user] in (select USERNAME from scr_CustomerAuthorities)  
group by [Time] order by [VisitingCount] asc

Ответы [ 5 ]

8 голосов
/ 04 мая 2009

Попробуйте

GROUP BY CONVERT(VARCHAR(5),Date, 108)

Всегда проверяйте, группируете ли вы все в предложении select, для которого нет функции агрегирования.

6 голосов
/ 04 мая 2009

[Время] - псевдоним столбца. Попробуйте

SELECT 
      COUNT(Page) AS VisitingCount
    , CONVERT(VARCHAR(5),Date, 108) AS [Time] 
FROM
    scr_SecuristLog   
WHERE
    Date BETWEEN '2009-05-04 00:00:00' AND '2009-05-06 14:58'  
    AND
    [user] IN (
                SELECT 
                    USERNAME             
                FROM
                    scr_CustomerAuthorities 
                )  
GROUP BY
    CONVERT(VARCHAR(5),Date, 108) 
ORDER BY
    [VisitingCount] ASC 
1 голос
/ 04 мая 2009
select Count(Page) as VisitingCount,CONVERT(VARCHAR(5),Date, 108) as [Time] from scr_SecuristLog   
where Date between '2009-05-04 00:00:00' and '2009-05-06 14:58'  
and [user] in(select USERNAME             
    from scr_CustomerAuthorities )  
group by CONVERT(VARCHAR(5),Date, 108) order by [VisitingCount] asc  

Я изменил GROUP BY, включив в него фактическое выражение для [Time], а не псевдоним столбца (поскольку его нельзя использовать в GROUP BY, только ORDER BY)

0 голосов
/ 04 мая 2009

Если вы не хотите повторять преобразование даты (иногда вычисление немного интенсивнее, чем простое преобразование), вы можете использовать что-то вроде этого:

select * 
from ( select Count(page) .., ... As [Date] from ... where ...) UG
group by UG.[Date]

Обратите внимание, что у вас есть для присвоения имени 'UG' внутреннему выбору, и что это будет наиболее вероятным и в большинстве случаев менее эффективным, чем повторение выражения преобразования в исходной группировке. Кроме того, все ваше выражение может измениться ... Но только вы знаете, что это возможно.

0 голосов
/ 04 мая 2009

Похоже, что Date является столбцом здесь, но это ключевое слово, а не в кавычках. Возможно, это проблема (не проверенная, хотя):

select Count(Page) as VisitingCount,CONVERT(VARCHAR(5),[Date], 108) as [Time] from scr_SecuristLog   
where [Date] between '2009-05-04 00:00:00' and '2009-05-06 14:58'  
and [user] in(select USERNAME             
    from scr_CustomerAuthorities )  
group by [Time] order by [VisitingCount] asc 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...