Консультация № 20094
22.04.2005, 09:55
0.00 руб.
0 3 3
Уважаемые эксперты!
Как может выглядеть SQL-запрос к БД?
Исх. данные: Paradox-таблица(назовём условно "Журнал учёта премий клиентов предприятия") со след. полями
id - идентификатор клиента
date - дата начисления премии
bonus - начисленная премия
id_bonus - вид начисляемой премии (1,2,3).
На выходе результат: Таблица со следующими столбцами:
id - идентификатор клиента
sum_bonus1 - сумма премий за указанный период типа 1
sum_bonus2 - сумма премий за указанный период типа 2
sum_bonus3 - сумма премий за указанный период типа 3.
Спасибо.

Обсуждение

Неизвестный
22.04.2005, 21:25
общий
это ответ
Здравствуйте, Масюк Сергей!
Не знаю будет ли этот работать с Paradox, в MSSQL работает:
select t1.client_id,
(select sum(t2.bonus) from table1 as t2
where
t2.client_id=t1.client_id and
t2.id_bonus=1 and
t2.pay_date between ‘07/12/1983‘ and ‘10/12/1983‘
group by t2.client_id
) as sum_bonus1,
(select sum(t3.bonus) from table1 as t3
where
t3.client_id=t1.client_id and
t3.id_bonus=2 and
t3.pay_date between ‘07/12/1983‘ and ‘10/12/1983‘
group by t3.client_id
) as sum_bonus2,
(select sum(t4.bonus) from table1 as t4
where
t4.client_id=t1.client_id and
t4.id_bonus=3 and
t4.pay_date between ‘07/12/1983‘ and ‘10/12/1983‘
group by t4.client_id
) as sum_bonus3
from table1 t1 group by t1.client_id
Где table1 соответственно "Журнал учёта премий клиентов предприятия",
а вместо дат лучше конечно сделать параметры.
Удачи!
Неизвестный
24.04.2005, 10:52
общий
это ответ
Здравствуйте, Масюк Сергей!
Ну смотря что ты хочешь видеть результатом запроса. Если тебе нужно её открыть то используется такой синтаксис SELECT * FROM Name, где name там имя твоей базы данных.
В SQL очень много различных операторов, которые одним махом не расскажешь. Если будет необходима помощь пиши на karatetski@tut.by.
Неизвестный
25.04.2005, 17:25
общий
это ответ
Здравствуйте, Масюк Сергей!
Попробуй так:
select id, sum (b1) as sum_bonus1, sum (b2) as sum_bonus2, sum (b3) as sum_bonus3
from (
select id, sum (bonus) as b1, 0 as b2, 0 as b3
from MY_TABLE
where date between START_DATE and END_DATE and
id_bonus = 1
group by id
union all
select id, 0 as b1, sum (bonus) as b2, 0 as b3
from MY_TABLE
where date between START_DATE and END_DATE and
id_bonus = 2
group by id
union all
select id, 0 as b1, 0 as b2, sum (bonus) as b3
from MY_TABLE
where date between START_DATE and END_DATE and
id_bonus = 3
group by id
)
group by id
Форма ответа