我想建立一个这样的表:
简要总结
两个表中的所有列。
由DISTINCT日行排序。
汇总每天所有到期付款NAEDO
表
总结每天所有成功/不成功的付款。 paysoft
表
当天支付的总额
当天的未偿还总数
此网格中有两个表格。
您付款到期 [NAEDO]
并且付款已经付款/或失败 [paysoft]
每天都有多个交易,网格按日分组,当天在该行汇总的交易。
带有测试数据的我尝试了一下,但我正在努力加入两张桌子。
SELECT
n.day,
n.ACCOUNTS,
ammount
FROM
(
SELECT DISTINCT start_date, extract(day from start_date) as day, count(*)as ACCOUNTS, sum(amount)as ammount
FROM NAEDO
WHERE start_date >= '2014-08-13' AND start_date <= '2014-09-12'
GROUP BY start_date
ORDER BY start_date
) n
LEFT JOIN
(
????
) ps ON ps. = ps.custno
GROUP BY start_date, n.day, n.ACCOUNTS, ammount
ORDER BY start_date
因此,此查询(没有第二个空白的查询)会创建行并输入截止当天的应付金额以及截止当天的帐户金额。
但是尝试加入表格会导致DISTINCT
选择
请帮助或指导我取得成果。
答案 0 :(得分:0)
如果我正确地阅读了您想要的桌子,您就不需要DISTINCT,并且您的连接条件是错误的。看起来您根据客户编号尝试加入,但您对此并不感兴趣。相反,您需要加入日期(n.start_date = ps.pay_date
)。我稍微更新了您的代码,以显示我认为您希望您的加入如何工作。
SELECT
n.day,
n.ACCOUNTS,
n.ammount,
ps.amt_paid
FROM
(
SELECT start_date, extract(day from start_date) as day, count(*)as ACCOUNTS, sum(amount)as ammount
FROM NAEDO
WHERE start_date >= '2014-07-13' AND start_date <= '2014-08-12'
GROUP BY start_date
ORDER BY start_date
) n
LEFT JOIN
(
Select pay_date, sum(amount) as amt_paid
From paysoft
Group By pay_date
Order By pay_date
) ps On n.start_date = ps.pay_date
Order By n.start_date
这并不是决定成功百分比的逻辑因素,也不排除来自amt_paid
的失败付款,但它应该让您开始。以这种方式构建查询也会导致计算帐户数量时出现问题。如上所述,它仅计算在特定日期应付款项的帐户数量。它可以很容易地更改为包括在特定日期付款的帐户,但是您可能会将某些帐户计入两次。