Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить сумму значений по диапазонам [D6, MSSQL]


sh ©   (2004-10-05 20:38:00) 

День добрый!
Подскажите плз как получить
Признак|сумма диапазон1|сумма диапазон2|...
если есть
признак|значение
и диапазоны, например <0 и >0
и надо найти суммы значений соответстующие признакам, попадающих в эти диапазоны.


Johnmen   (2004-10-06 09:15:00) [1]

>и надо найти суммы значений соответстующие признакам,
> попадающихв эти диапазоны.

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


ЮЮ   (2004-10-06 03:02:00) [2]

вариант 1:

SELECT
 Codes.*, Gr1.Sum1, Gr2.Sum2
FROM
(SELECT DISTINCT признак as Code FROM Table) Codes
 LEFT JOIN (
   SELECT признак as Code, SUM(значение) Sum1, 0 Sum2
   FROM Table
   GROUP BY признак
   WHERE значение < 0
 ) Gr1 ON Codes.Code = Gr1.Code
 LEFT JOIN (
   SELECT признак as Code, SUM(значение) Sum2, 0 Sum2
   FROM Table
   GROUP BY признак
   WHERE значение > 0
 ) Gr2 ON Codes.Code = Gr2.Code

Вариант

SELECT
 Code, SUM(f1) Sum1, SUM(f2) Sum2
FROM (
 SELECT
   признак as Code,
   CASE WHEN значение < 0 THEN значение ELSE 0 END f1,
   CASE WHEN значение > 0 THEN значение ELSE 0 END f2
 FROM
   Table
 ) Table


Наверх

Титульная страница Поиск, карта сайта Написать письмо