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

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

Реально ли это сделать одним запросом ? [D5, IB6.x]


Andrey V. ©   (2004-06-16 15:42:00) 

Что-то не получается у меня

Таблица:
-----------------------------------
field_1  field_2  field_3  field_4
-----------------------------------
Иванов     3        33       1
Петров     4        2        1
Иванов     2        12       0
Сидоров    5        6        1
-----------------------------------
field_4 принимает только 1 и 0

Надо:

-----------------------------------
field_1  Симма       Сумма
        field_2     field_3
        для         для
        field_4=0   field_4=1
-----------------------------------
Иванов     2          33      
Петров     0          2        
Сидоров    0          6        
-----------------------------------

Пример упрощен, да простят меня люди с вышеупомянытыми фамилиями


Sandman25   (2004-06-22 09:36:00) [1]

[3] Andrey V. ©   (22.06.04 08:34)

А вот это уже перекрестный запрос. В принципе реализуется через динамический SQL, но довольно медленно работает, естественно. Поищите в форуме sql.ru по слову "перекрестный"


bushmen   (2004-06-22 09:26:00) [2]

>field_4 принимает только 1 и 0

Вы сами помните, какие условия задачи ставили?


Andrey V.   (2004-06-22 08:34:00) [3]

Ну это хорошо когда field_4 принимает только 1 и 0.
А вот такой пример:

-----|-----|
Вася  Водка
Вася  Водка
Петя  Пиво
Вася  Пиво
Вася  Водка
Петя  Пиво
-----|-----|

Как получить такой результат :

Имя   Пиво  Водка
-----|-----|------
Вася    1      3
Петя    2      0
-----|-----|------

Просмотрел Грубера, не увидел как ТАК развернуть запрос...


Andrey V.   (2004-06-16 15:50:00) [4]

Sandman25, ну вы везде успеваете :-)
Сейчас буду пробовать ...


Sandman25   (2004-06-16 15:46:00) [5]

select familyname, sum(field2*(1-field4)), sum(field3*field4)
 from mytable
group by familyname


Наверх

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