Сумма датирована и сгруппирована по - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть этот простой запрос, но он не дает желаемых результатов ... надеюсь, вы можете помочь:

Результат:

Construction        2
Construction        3
Emergency Funds     4
Housing             5
Seniors Services    9
Seniors Services    185

То, что я хочу, это:

Construction     5
Emergency Funds  4
Housing          5
Seniors Services 194


SELECT T.NAME, SUM(DATEDIFF (HH,T.DATE_DUE,T.DATE_START))as Donation_Hours FROM TASKS T 
 GROUP BY t.name, T.DATE_DUE,T.DATE_START
 order by name

Ответы [ 2 ]

4 голосов
/ 20 сентября 2011

Попробуйте это:

SELECT T.NAME, SUM(DATEDIFF(HH,T.DATE_DUE,T.DATE_START))as Donation_Hours 
FROM TASKS T  
GROUP BY t.name
ORDER BY name 
0 голосов
/ 20 сентября 2011

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

При этом я думаю, что вы имеете в виду тот факт, что у вас есть несколько экземпляров имени, а не один результат на имя с общей суммой разницы часов. Если это ваша проблема, вы можете исправить ее, удалив все элементы в вашей группе после t.name. От вас не требуется помещать составные элементы агрегата в предложение group by таким же образом, как если бы вы перечислили их отдельно.

Я предполагаю, что вы используете MSSQL через SSMS. Этот ответ был проверен по SQL2008 R2.

...