103 votes

Le GROUPE SQL Server PAR datetime ignorer heure, minute et sélectionnez la date et la somme de la valeur

J'ai une table avec deux champs - datetime et int. Je veux faire un group by sur l' datetime uniquement sur la date d'ignorer les heures et les minutes. L' SELECT déclaration doit retourner une date qui correspond à la somme de l'int d'une seule journée.

174voto

JNK Points 32743
SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)

25voto

rabudde Points 3279

Comme il n'avait pas de spécifier la version de SQL server, il utilise (date type n'est pas disponible en 2005), on peut aussi utiliser

SELECT CONVERT(VARCHAR(10),date_column,112),SUM(num_col) AS summed
FROM table_name
GROUP BY CONVERT(VARCHAR(10),date_column,112)

3voto

SqlHog Points 1

-- J'aime ce que le type de données et le format reste compatible avec une date de type de données de temps

;with cte as(
    select 
        cast(utcdate as date) UtcDay, DATEPART(hour, utcdate) UtcHour, count(*) as Counts
    from dbo.mytable cd 
    where utcdate between '2014-01-14' and '2014-01-15'
    group by
        cast(utcdate as date), DATEPART(hour, utcdate)
)
select dateadd(hour, utchour, cast(utcday as datetime)) as UTCDateHour, Counts
from cte

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X