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

Откуда:
Сообщений: 7
есть таблица в которой хранится разные данные по месяцам...
зделал запрос что бы выбрать людей у которых оплата больше 100 за месяц...
как выбрать что бы оплата была больше 100 допустим за пол года...
каждый месяц...
27 фев 04, 12:49    [554396]     Ответить | Цитировать Сообщить модератору
 Re: запрос по sql  [new]
JibSkeart
Member

Откуда: Из далекой галактики
Сообщений: 19870
попробовать сделать ввиде динамического запроса.
____
Картинка с другого сайта.
27 фев 04, 13:21    [554487]     Ответить | Цитировать Сообщить модератору
 Re: запрос по sql  [new]
vini20
Member

Откуда:
Сообщений: 7
тогда еще вопрос....
я с sql работаю всего 2 дня...
как сделать в виде динамический запрос???
27 фев 04, 13:34    [554534]     Ответить | Цитировать Сообщить модератору
 Re: запрос по sql  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
create table saldo (id int not null identity(1, 1), people nvarchar(100), salary float, your_date datetime)
insert into saldo (people , salary, your_date ) values ('ivanov', 55, '20040101')
insert into saldo ( people , salary, your_date ) values ('ivanov', 45, '20040201')
insert into saldo ( people , salary, your_date ) values ( 'petrov', 12, '20040101')
insert into saldo ( people , salary, your_date ) values ( 'sidorov', 25, '20040201')
insert into saldo ( people , salary, your_date ) values ( 'sidorov', 715, '20040301')
insert into saldo ( people , salary, your_date ) values ( 'ivanov', 325, '20040201')
insert into saldo ( people , salary, your_date ) values ( 'ivanov', 325, '20040401')
insert into saldo ( people , salary, your_date ) values ( 'ivanov', 125, '20040401')
insert into saldo ( people , salary, your_date ) values ( 'ivanov', 135, '20040601')
insert into saldo ( people , salary, your_date ) values ( 'ivanov', 125, '20041001')

select people, sum(salary), DATEPART(Month, your_date)
FROM saldo WHERE (DATEPART(Month, your_date) BETWEEN 1 AND 6 ) AND people IN (
select distinct people FROM saldo WHERE (DATEPART(Month, your_date) BETWEEN 1 AND 6 ) GROUP BY people, salary HAVING sum(salary) > 100
) GROUP BY people, DATEPART(Month, your_date)
28 фев 04, 01:32    [555723]     Ответить | Цитировать Сообщить модератору
 Re: запрос по sql  [new]
MVM
Member

Откуда:
Сообщений: 271

declare @bdate datetime, @edate datetime, @summa money, @nn int
select @bdate = '20030101', @edate ='20030631', @summa = 100
select @nn = select datediff(mm,@bdate,@edate)+1

select people
FROM saldo
WHERE ydate between @bdate and @edate
and summa > @summa
group by ydate
having count(ydate) = @nn

Работает верно, если на каждого работника в течении месяца - одна строка с начислениями. Если иначе - вначале группировать все начисления по человеку и месяцу начислений.
29 фев 04, 12:28    [556173]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить