如何使用 Firebird 数据库制作分类帐

How to make ledger using Firebird database

我想根据上述查询设计 Crystal 报告,但我无法从 Firebird 数据库中获取数据。

SELECT TRANSACTION_DATE=null, PARTICULAR='Opening Balance', DEBIT=null, CREDIT=null, sum(DEBIT)-sum(CREDIT) as balance
FROM ROZNAMCHA 
WHERE TRANSACTION_DATE < '2021-06-07'
union all
SELECT TRANSACTION_DATE, PARTICULAR, DEBIT, CREDIT, DEBIT-CREDIT 
FROM ROZNAMCHA 
WHERE TRANSACTION_DATE BETWEEN '2021-06-08' AND '2021-06-08'

我想要这样的东西

面临错误

您的查询有两个问题:

  1. 您目前的 select 列表中有布尔表达式,您可能只想在其中声明带有别名的固定值:

    TRANSACTION_DATE=null, PARTICULAR='Opening Balance', DEBIT=null, CREDIT=null
    

    应该是

    null as TRANSACTION_DATE, 'Opening Balance' as PARTICULAR, null as DEBIT, null as CREDIT
    
  2. 作为问题 1 的结果,您在查询中使用了 table 中的列,同时您还使用了聚合函数。使用聚合函数时,出现在聚合函数之外的列必须列在 GROUP BY 子句中。

    在这种情况下,解决了第一个问题,也就解决了这个问题。

简而言之,您的查询应该是:

SELECT null as TRANSACTION_DATE, 'Opening Balance' as PARTICULAR, 
       null as DEBIT, null as CREDIT, 
       sum(DEBIT)-sum(CREDIT) as balance
FROM ROZNAMCHA 
WHERE TRANSACTION_DATE < '2021-06-07'
union all
SELECT TRANSACTION_DATE, PARTICULAR, DEBIT, CREDIT, DEBIT-CREDIT 
FROM ROZNAMCHA 
WHERE TRANSACTION_DATE BETWEEN '2021-06-08' AND '2021-06-08'

请注意,这不会产生您想要的输出。为此,您需要做更多。