我正在尝试使用下面的数据在水晶报表中创建一个公式,该公式将计算两个数据源的当前RunDt中的DxLoaded减去上个月的RunDt的差值。每个月都会填充一个新的RunDt。当报告被刷新时,我需要使用最新的RunDt计算公式,并将其与每个数据源的前一个RunDt进行比较。
例如,我想计算1203 RunDt的5,491,932减去1202 RunDt的3,830,842。然后,让公式对可能填充的每个数据源执行此操作。对于相同的数据源,还将有2012年的服务年,并希望仅与2011年和2012年相比,使用2012年。我试过使用前面的函数,但没有得到正确的结果。
Yr Data_Source RunDt_YYMM DxLoaded
2011 ABS 1203 5,491,932
2011 ABS 1202 3,830,842
2011 IALT 1203 9,193,144
2011 IALT 1202 6,578,678
2012 ABS 1203 1,837,900
2012 ABS 1202 1,083,124
2012 IALT 1203 4,223,111
2012 IALT 1202 2,985,543 非常感谢任何对我们有帮助的建议!
谢谢!
发布于 2012-03-07 19:14:18
假设您希望输出按问题中给定的顺序显示,并且希望差异显示在数据源和年份的最新RunDt_YYMM值旁边:
Yr上升,Data_Source上升,RunDt_YYMM 下降。(应该可以在查询或Crystal Record Sort expert中执行此操作。)
if NextIsNull ({SummaryTable.Yr}) then 0 else
if {SummaryTable.Data_Source}=Next({SummaryTable.Data_Source}) and
{SummaryTable.Yr}=Next({SummaryTable.Yr})
then {SummaryTable.DxLoaded} - Next({SummaryTable.DxLoaded})DxLoaded字段旁边的报告详细信息部分。发布于 2012-03-07 15:46:36
这类问题很容易陷入困境。诀窍是通过使用rundt列将表与自身连接起来,从而对查询中的数据进行排序。您可以使用自定义命令在crystal中执行此操作,或者我更喜欢在SQL中创建视图或存储过程。例如:
SELECT *
INTO #TEMP
FROM (
SELECT 2011 Yr, 'ABS' Data_Source, '1203' RunDt_YYMM, 5491932 DxLoaded
UNION SELECT 2011 Yr, 'ABS' Data_Source, '1202' RunDt_YYMM, 3830842 DxLoaded
UNION SELECT 2011 Yr, 'IALT' Data_Source, '1203' RunDt_YYMM, 9193144 DxLoaded
UNION SELECT 2011 Yr, 'IALT' Data_Source, '1202' RunDt_YYMM, 6578678 DxLoaded
UNION SELECT 2012 Yr, 'ABS' Data_Source, '1203' RunDt_YYMM, 1837900 DxLoaded
UNION SELECT 2012 Yr, 'ABS' Data_Source, '1202' RunDt_YYMM, 1083124 DxLoaded
UNION SELECT 2012 Yr, 'IALT' Data_Source, '1203' RunDt_YYMM, 4223111 DxLoaded
UNION SELECT 2012 Yr, 'IALT' Data_Source, '1202' RunDt_YYMM, 2985543 DxLoaded
) A
SELECT * FROM #TEMP
SELECT
a.Yr, a.Data_Source, a.RunDT_YYMM, a.DxLoaded, b.DxLoaded PrevDxLoaded
FROM
#TEMP a
LEFT OUTER JOIN
#TEMP b
ON
b.Yr = a.Yr
AND
b.Data_Source = a.Data_Source
AND
b.RunDT_YYMM = CASE WHEN RIGHT(a.RunDT_YYMM,2) = '01' THEN
CAST(CAST(a.RunDT_YYMM as INT) - 89 AS VARCHAR(4))
ELSE
CAST(CAST(a.RunDT_YYMM as INT) - 1 AS VARCHAR(4))
END结果:
Yr Data_Source RunDT_YYMM DxLoaded PrevDxLoaded
2011 ABS 1202 3830842 NULL
2011 ABS 1203 5491932 3830842
2011 IALT 1202 6578678 NULL
2011 IALT 1203 9193144 6578678
2012 ABS 1202 1083124 NULL
2012 ABS 1203 1837900 1083124
2012 IALT 1202 2985543 NULL
2012 IALT 1203 4223111 2985543https://stackoverflow.com/questions/9592711
复制相似问题