2011-01-21 4 views
0

Мне нужна небольшая помощь в создании SQL-запроса. У меня есть таблица пользовательских транзакций, которая в основном включает; дата транзакции, имя пользователя, плата.Небольшая помощь с SQL-запросом и подзапросом

Итак, в двух словах, это то, что я хочу сделать. Для указанного диапазона дат суммируйте все платежи по имени пользователя. Из этой таблицы подзапросов мне нужно вернуть счет всех сумм транзакций пользователя, которые находятся между указанным диапазоном.

Я пытался разбить это на три отдельных подзапроса, но понял, что может быть более простой способ, любые идеи?

ответ

1

Это даст вам количество транзакций сумм, где сделки происходят между двумя датами и суммой в определенном диапазоне (между нижней и верхней границей).

select count(*) as sum_count 
from (
    select sum(charge) as total 
    from transactions 
    where transaction_date between @start_date and @end_date 
    group by username) t 
where total between @lower and @upper 

Заменить параметры с фактическими значениями, использовать в хранимой процедуре с параметрами, или установить их (в коде?) До значений, перед выполнением запроса.

+0

Ok, это подзапрос у меня есть: SELECT SUM(dbo_rpt_print_transactions.[Sheets]) as TOTAL FROM dbo_rpt_print_transactions WHERE (((dbo_rpt_print_transactions.[Date/Time]) Between #6/1/2010# And #12/30/2010#)) GROUP BY dbo_rpt_print_transactions.[User ID]; Это возвращает правильную таблицу зарядов (листы в моем случае) по имени пользователя, которые находятся в диапазоне дат. У меня возникли проблемы с выяснением остальной части. Что такое SUM_COUNT? – jomille

0

 
select username, sum(charge), count(charge) 
from userTransactionTable 
where transaction_date between '01/01/2011' and '01/01/2012' 
group by username 

Смежные вопросы