我有一个带借记和贷记列的数据库。我已经从这个数据库中创建了一个水晶报告,作为日期范围报告和使用公式进行平衡添加的新列。现在我需要一行来从数据库到我的报告获得前一天的余额。对于这个选项,我需要创建一个自定义存储过程。任何人都可以帮我解决这个问题
答案 0 :(得分:0)
一般情况下,我建议您不要使用Crystal扩展数据库中的数据(添加列,公式等)。水晶脚本(根据我的经验)是繁琐,不明显和难以维护的。因此,我建议您尽可能使用SQL - 通过视图创建和扩展数据模型,并将这些视图用作Crystal报表的数据源。
至于您的具体情况,例如,如果您的表格中包含debit
列和credit
列,则需要使用其他列balance
和previous_balance
来扩展您的数据,解决方案可能看起来像这样:
create table your_table (id int, [day] date, credit float, debit float);
insert into your_table (id, [day], credit, debit) values
(1, '2014-12-04', 0.0, 340.00),
(2, '2014-12-05', 10000.0, 0.00),
(3, '2014-12-06', 7666.18, 89.00),
(4, '2014-12-07', 0.0, 990.00);
-- create view dbo.your_table_extension as
select t1.[day]
, t1.credit
, t1.debit
, t1.credit - t1.debit [balance] --> balance formula
, t2.credit - t2.debit [previous_balance] --> prev day balance formula
from your_table t1
left join your_table t2 on dateadd(day, -1, t1.[day]) = t2.[day]
and t1.id != t2.id
结果:
DAY CREDIT DEBIT BALANCE PREVIOUS_BALANCE
----------------------------------------------------
2014-12-04 0 340 -340 (null)
2014-12-05 10000 0 10000 -340
2014-12-06 7666.18 89 7577.18 10000
2014-12-07 0 990 -990 7577.18