2015-01-27 4 views
0

Я пытаюсь суммировать значение по дате, вот запрос я в настоящее время есть,SQL сервер, Сортировка даты и времени значение

SELECT  SUM(LineTotalValue) AS Value, DateTimeCreated 
FROM   SOPOrderReturnLine AS SOPOrderReturnLine 
WHERE  (AnalysisCode1 LIKE 'value%') 
GROUP BY DateTimeCreated 
ORDER BY DateTimeCreated desc 

Вот то, какие данные выглядит из результатов запроса.

Value  DateTimeCreated 

433.00 2015-01-26 15:36:28.723 
135.00 2015-01-26 15:36:13.883 
600.00 2015-01-26 15:28:14.957 
0.00 2015-01-26 14:45:57.920 
58.25 2015-01-26 14:45:21.080 
39.08 2015-01-26 14:45:13.443 
41.56 2015-01-26 14:45:07.010 
99.80 2015-01-26 14:44:56.243 
99.99 2015-01-26 14:44:48.590 
75.00 2015-01-26 14:44:39.647 

Как вы можете видеть, как значение DateTimeCreated имеет раз в этом он не будет рассчитывать значение правильно то, что я хочу, чтобы это сделать, это рассчитывать на основе даты, как этого добиться? изменение конструкции данных или таблицы не вариант

+1

Передайте ваше время и дату и группу –

ответ

3
SELECT  SUM(LineTotalValue) AS Value, 
      CONVERT(date, DateTimeCreated) 
FROM  SOPOrderReturnLine AS SOPOrderReturnLine 
WHERE  AnalysisCode1 LIKE 'value%' 
GROUP BY CONVERT(date, DateTimeCreated) 
ORDER BY CONVERT(date, DateTimeCreated) desc 
0

можно заливать значения DateTimeCreated чтобы датировать типа, просто изменить группу по:

GROUP BY CAST(DateTimeCreated AS DATE) 
1

Вы можете попробовать это

SELECT  SUM(LineTotalValue) AS Value, 
      CAST(DateTimeCreated AS DATE) 
FROM  SOPOrderReturnLine AS SOPOrderReturnLine 
WHERE  AnalysisCode1 LIKE 'value%' 
GROUP BY CAST(DateTimeCreated AS DATE) 
ORDER BY CAST(DateTimeCreated AS DATE) desc 
0

В этом запросе также будет использоваться индекс, если таковой имеется,

SELECT  SUM(LineTotalValue) AS Value, DateTimeCreated 
FROM   SOPOrderReturnLine AS SOPOrderReturnLine 
WHERE  (AnalysisCode1 LIKE 'value%') 
GROUP BY dateadd(d,0,datediff(day,0,DateTimeCreated)) 
ORDER BY DateTimeCreated desc 
Смежные вопросы