首页 文章

两个表连接网格,具有不同的行

提问于
浏览
2

我想 Build 一个这样的表:

brief summary
两个表中的所有列 .
由DISTINCT日行排序 .
汇总每天所有到期付款 NAEDO
总结每天所有成功/不成功的付款 . paysoft
当天支付的总额
当天的优秀总数

enter image description here

此网格中表示两个表 .

您已付款 [NAEDO] 并且您已付款/或已付款 [paysoft]

每天都有多个事务,并且网格按天分组,当天在该行中汇总事务 .

FIDDLE 与测试数据

我尝试了一下,但我正在努力加入两张 table .

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

因此,此查询(没有第二个空白的查询)创建行并输入当天到期的应付金额和当天到期的帐户金额 .
但是试图加入这些表格会让我的选择失败

请帮助或指导我实现结果 .

1 回答

  • 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 排除失败的付款,但它应该让您开始 . 以这种方式构建查询也会导致计算帐户数量时出现问题 . 如上所述,它仅计算在特定日期应付款项的帐户数量 . 它可以很容易地更改为包括在特定日期付款的帐户,但之后您可能会将某些帐户计入两次 .

相关问题