Sql server 2008 r2 如何创建存储过程以从数据库获取期初余额到日期范围水晶报表
我有一个带有借方和贷方栏的数据库。我已经从这个数据库中创建了一个crystal报告,作为日期范围报告,并使用余额公式添加了一个新列。现在,我需要一行来将前一天的余额从数据库获取到我的报表。对于此选项,我需要创建一个自定义存储过程。有人能帮我解决这个问题吗?一般来说,我建议您不要使用Crystal来扩展数据库中的数据,添加列、公式等。根据我的经验,Crystal脚本很麻烦、不易察觉,而且很难维护。因此,我建议您尽可能通过视图使用SQL创建和扩展数据模型,并将这些视图用作Crystal报表的数据源 对于您的具体情况,例如,如果您有一个包含debit和credit列的表,并且需要使用额外的列余额和先前的_余额扩展数据,那么解决方案可能如下所示:Sql server 2008 r2 如何创建存储过程以从数据库获取期初余额到日期范围水晶报表,sql-server-2008-r2,crystal-reports,Sql Server 2008 R2,Crystal Reports,我有一个带有借方和贷方栏的数据库。我已经从这个数据库中创建了一个crystal报告,作为日期范围报告,并使用余额公式添加了一个新列。现在,我需要一行来将前一天的余额从数据库获取到我的报表。对于此选项,我需要创建一个自定义存储过程。有人能帮我解决这个问题吗?一般来说,我建议您不要使用Crystal来扩展数据库中的数据,添加列、公式等。根据我的经验,Crystal脚本很麻烦、不易察觉,而且很难维护。因此,我建议您尽可能通过视图使用SQL创建和扩展数据模型,并将这些视图用作Crystal报表的数据源
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
检查为此创建SP似乎有点奇怪或过度。。。请您再解释一下这一点好吗?正如您在结果中所显示的,我需要在报告的第一行存储上一个余额行和结转余额。我试过公式,但它不起作用。我只需要三列,如结果贷方、借方和余额列所示。如果我过滤2014-12-05的上述结果,第一行将显示-340.00。这就像银行对账单,但报表的第一行如何存储以前的余额?在第一排之前什么都不可能。。。不管怎样,我想不出你的问题