报告SQL语句

时间:2016-08-09 13:18:43

标签: sql crystal-reports

如果没有参数值传递给报告,我希望在整个上个月运行报告。我该怎么做呢?

另一种选择是默认加载到上个月,然后刷新时,可以选择日期的新参数。

有没有办法做其中任何一种?

这是我的命令窗口。我的日期参数选择了SQL代码。

select cc.NM, dst.DSCRPTN, count(*)
from DST_SUBMITTION dsts , PATIENT p, DRUG_SCREEN_TEST dst, CARE_CENTER cc
where dsts.PTNT_ID = p.PTNT_ID
and   p.CC_ID = cc.CC_ID
and   dsts.DST_ID = dst.DST_ID
and   date(APNTMNT_DT) >=  date({?startDt})
and   date(APNTMNT_DT) <=  date({?endDt})
and dsts.STS_CD in ('A', 'I')
group by cc.NM, dsts.DST_ID;

3 个答案:

答案 0 :(得分:1)

您可以在SQL中完全执行此操作。使用null coalescing运算符,如果没有提供值,则计算默认值。有点像...

DATE >= ISNULL(?StartDate, DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0)))
AND DATE <= ISNULL(?EndDate, DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)))

答案 1 :(得分:0)

我会设置一个公式来确定参数是否为null。然后使用新公式替换报表中的每个参数实例。类似的东西:

If HasValue({DateParameter})
Then DateAdd ("m", -1, CurrentDate)
Else {Parameter}

答案 2 :(得分:0)

如下所示在crystal report中创建一个参数,并使“optional prompt”为TRUE。 在选择导出条件中应用此类公式。

if  hasvalue({?Date parameter}) then 
{table.Date} <= {?Date parameter}
else 
{table.Date} <= DateAdd ("m", -1, CurrentDate)

如果在参数中没有选择任何内容,您将获得上个月的结果..