Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 всем добрый день!  [new]
Евгенич
Member

Откуда:
Сообщений: 274
есть запрос:

select r.nextpay (и прочие поля) from Resourse
 group by r.nextpay (и прочие поля) 


Как сделать case в области группировки, т.е. при определенных обстоятельствах брать sum(r.nextpay) а иногда просто r.nextpay. Что то типа того:

select 
case when r.id=1 then sum(r.nextpay) else r.nextpay
end
 (и прочие поля) 

from Resourse 
group by 

case when r.id<>1 then r.nextpay
--иначе не группировать по этому полю
end
4 апр 13, 10:14    [14134040]     Ответить | Цитировать Сообщить модератору
 Re: всем добрый день!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Два запроса один с группировкой другой без объедините инструкцией UNION ALL.
4 апр 13, 10:23    [14134097]     Ответить | Цитировать Сообщить модератору
 Re: всем добрый день!  [new]
Glory
Member

Откуда:
Сообщений: 104751
select
case when r.id=1 then 1 else 2 end as x, sum(r.nextpay) (и прочие поля)

from Resourse r
group by
case when r.id=1 then 1 else 2 end
end
4 апр 13, 10:26    [14134119]     Ответить | Цитировать Сообщить модератору
 Re: всем добрый день!  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
select r.nextpay (и прочие поля), case when r.id=1 then sum(r.nextpay) else sum(r.nextpay) / count(r.nextpay) from Resourse
 group by r.nextpay (и прочие поля)
4 апр 13, 10:49    [14134283]     Ответить | Цитировать Сообщить модератору
 Re: всем добрый день!  [new]
Евгенич
Member

Откуда:
Сообщений: 274
Glory
select
case when r.id=1 then 1 else 2 end as x, sum(r.nextpay) (и прочие поля)

from Resourse r
group by
case when r.id=1 then 1 else 2 end
end


Спасибо! Сделал так

invm
select r.nextpay (и прочие поля), case when r.id=1 then sum(r.nextpay) else sum(r.nextpay) / count(r.nextpay) from Resourse
group by r.nextpay (и прочие поля)


А так не получилось

Всем большое спасибо!!!
4 апр 13, 17:01    [14136912]     Ответить | Цитировать Сообщить модератору
 Re: всем добрый день!  [new]
Евгенич
Member

Откуда:
Сообщений: 274
pkarklin
Два запроса один с группировкой другой без объедините инструкцией UNION ALL.


Раньше так и было, но не хочется переписывать один и тот же текст дважды - хочется покомпактней
4 апр 13, 17:11    [14136969]     Ответить | Цитировать Сообщить модератору
 Re: всем добрый день!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Евгенич
Раньше так и было, но не хочется переписывать один и тот же текст дважды - хочется покомпактней


Сравните все приведенные здесь варианты. Не всегда компактность = оптимальное быстродействие.
4 апр 13, 17:29    [14137056]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить