我想要实现的是每日金融交易的报告。通过我的SQL查询,我想计算现金交易总数,总现金价值和支票相同。我只想在指定日期这样做。
以下是我遇到问题的查询片段。这些sum和count命令正在处理表中的所有数据,而不是处理选定的日期。
(SELECT SUM(amount) FROM TRANSACTION WHERE payment_type.name = 'cash') AS total_cash,
(SELECT COUNT(*) FROM TRANSACTION WHERE payment_type.name = 'cash') AS total_cash_transactions
很抱歉,如果我没有足够的细节,因为我没有时间。如果您需要更多信息,请询问..
干杯。
更新: 我已经在布局和结果上发布了一些更多信息,我将在这里: www.conorhackett.com/sql/transaction.html
问题在于,当我加入payment_table时(所以我可以指定payment_type_name而不是id)它会计算现金/支票的所有交易。日期限制似乎消失了。
任何帮助表示感谢。
答案 0 :(得分:3)
不需要相关子查询,只需使用group by
select
t.payment_type_id as type_id
,sum(t.amount) as total_cash
,count(*) as total_cash_transactions
from TRANSACTION t
where t.date = '2010-05-01'
group by t.payment_type_id
如果您需要从那里获取类型名称,则可以将结果与payment_type
结合。