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

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

Помогите составить SQL-запрос [D7, Access]


Страницы:   1 2

Антоныч ©   (2005-02-24 16:09:00) 

Уважаемые мастера! Возникла проблема, уже бьюсь над ней 2-й день. (Сразу скажу, что в SQL я шибко не силен). Пусть для примера имеется таблица
T1 - имя таблицы
F1 ! F2 ! F3 - поля
Pr1! A  ! 27
Pr1! A  ! 12
Pr1! B  ! 3
Pr2! B  ! 2
Pr2! A  ! 10
Pr2! B  ! 7

Необходимо составить SQL-запрос, в котором первое поле - это название F1, второе - это сумма всех значений F1, где поле F2 (некоторый признак) равно значению 'А', и третье - сумма всех значений F1, где поле F2 равно 'В'. Чтоб было яснее, приведу пример для суммы со значением 'A':
SELECT F1,SUM(F3)
FROM T1
WHERE F2="A"
GROUP BY F1
Получается таблица вида
F1 ! SummaA
Pr1! 39
Pr2! 10
Можно ли сделать так, чтоб в результате запроса в одной таблице было и поле SummaA, и поле SummaB?


Ольга   (2005-02-24 17:10:00) [21]

Не знаю, поддерживаются ли в Access вложенные запросы.
Если да , то так:

SELECT a.F1,SUM(F3), b.SUM2
FROM T1 a,
  (SELECT F1,SUM(F3) as SUM2
   FROM T1
   WHERE F2="A"
   GROUP BY F1) b
WHERE F2="B" AND a.F1=b.F1
GROUP BY a.F1


Val   (2005-02-24 17:06:00) [22]

select a.f1, sum(a.f3) as summaA, sum(b.f3) as summaB
from l_tbl a, l_tbl b
where a.id = b.id
  and (a.f2 = 'A'  or b.f2 = 'B')
group by a.f1


Антоныч   (2005-02-24 16:50:00) [23]

Блин, извиняюсь, просто инет глючит страшно :)


Антоныч   (2005-02-24 16:49:00) [24]

Sergey13:
Тогда получится:
F1 ! F2! Summa
Pr1! А ! 39
Pr1! B ! 3
Pr2! А ! 10
Pr2! B ! 9

А надо, чтоб
F1 ! SummaA! SummaВ
Pr1! 39    ! 3
Pr2! 10    ! 9


Sergey13   (2005-02-24 16:47:00) [25]

Это уже вроде как перекрестный запрос. Вроде Аксес так может. Как - не знаю.


Антоныч   (2005-02-24 16:45:00) [26]

Sergey13:
Тогда получится:
F1 ! F2! Summa
Pr1! А ! 39
Pr1! B ! 3
Pr2! А ! 10
Pr2! B ! 9

А надо, чтоб
F1 ! SummaA! SummaВ
Pr1! 39    ! 3
Pr2! 10    ! 9


Sergey13   (2005-02-24 16:28:00) [27]

SELECT F1,F2,SUM(F3)
FROM T1
GROUP BY F1,F2


Anatoly Podgoretsky   (2005-02-24 16:12:00) [28]

Читал, читал, ни фига не понятно, но на всякий случай строковые поля нельзя суммировать.


Страницы:   1 2

Наверх

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