2014-08-29 3 views
0

я иметь следующую таблицу тестSum поле с условием

id order hour 

У меня есть две ситуации:

Первый случай: ничего не делать

id order hour 
1 1  20 
2 1  40 
3 1  50 

Второй случай:

id order hour 
1 1  20 
1 2  50 
1 3  70 
2 1  40 
2 2  10 
2 3  20 
2 4  90 
3 1  50 

Мне нужно получить идентификатор час

1 120 //hour total=50+70 for id=1 when order >1 
2 120//hour total for=10+20+90 id=2 when order >1 
3 50 // nothing to do because I have one row for id=3 

Как я могу сделать что-то вроде этого?

ответ

1

Пожалуйста, попробуйте следующее. SUM для id = 3 будет 50, поэтому вы все равно можете использовать SUM в этом случае.

SELECT id, SUM(hour) AS HourTotal 
FROM YourTable t1 
WHERE [order] > 1 OR 
     NOT EXISTS (SELECT 1 FROM YourTable t2 WHERE t1.id = t2.id AND [order] > 1) 
GROUP BY id 
+0

я не понял вниз голосования. В вопросе задается 3 строки с итогами в качестве ответа, поскольку общее число id = 3 равно 50. – wdosanjos

+0

Вниз, потому что сумма неверна в случае для id 1 и 2 - она ​​слишком высока. Строки с порядком> 1 не должны включаться, за исключением случаев, когда это одна строка (случай id 3). – jpw

+0

Хорошая точка. Исправлено решение другого сценария. – wdosanjos

0

этот ниже код работает. я протестировал. Пожалуйста, попробуйте

select ID,SUM(HourTotal) as hourtotal from (
    select id,HourTotal,row_num 
    from (SELECT id, hour_n AS HourTotal ,ROW_NUMBER() over(partition by id order by id) row_num 
    FROM id)a 
    where a.id!=a.row_num)b 
    group by id 
+0

Лучше отредактировать существующий ответ, чем попробовать опубликовать новый ... – AHiggins

+0

Он хотел отредактировать свой собственный ответ (я говорю это, потому что @AdiT пытался отредактировать ответ wdosanjos) – Vache

0

пожалуйста, попробуйте ниже code.it работает

select ID,SUM(HourTotal) as hourtotal from (
     select id,HourTotal,row_num 
     from (SELECT id, hour_n AS HourTotal ,ROW_NUMBER() over(partition by id order by id) row_num 
     FROM id)a 
     where a.id!=a.row_num)b 
     group by id 
Смежные вопросы