0

这是我与水晶报表连接的存储过程,我想返回开始日期和结束日期,这是我从参数中获取的,例如如果日期为空,那么报表上不会显示任何内容,但如果日期有一些值,则打印该值。

CREATE PROCEDURE [dbo].PatientClaimInfo

@StartDate Date = NULL,
@EndDate Date = NULL

AS
BEGIN
select p.VLNAME + ' ' + p.VFNAME AS Patients_Name, p.IPATID AS Patient_ID, p.DDOB AS dob,
       d.NCOPAY, d.NVTOTPLAN, d.NVWOPLAN, d.NVWOPAT, d.NVADJPLAN, d.NVADJPAT, d.NVPAIDPLAN,
       d.NVPAIDPAT, d.NVBALPLAN, d.NVBALPAT, d.NAPPTBAL, d.VPAYSTAT AS Status
From   pmvixtr d

INNER JOIN  pmptxft p ON p.IPATID = d.IPATID


Where @StartDate <= d.DSDATE AND @EndDate >= d.DSDATE

END
4

2 回答 2

1

尝试

CREATE PROCEDURE [dbo].PatientClaimInfo

@StartDate Date = NULL,
@EndDate Date = NULL

AS
BEGIN
IF (@StartDate Date IS NOT NULL AND @EndDate Date IS NOT NULL)
THEN

select p.VLNAME + ' ' + p.VFNAME AS Patients_Name, p.IPATID AS Patient_ID, p.DDOB AS dob,
       d.NCOPAY, d.NVTOTPLAN, d.NVWOPLAN, d.NVWOPAT, d.NVADJPLAN, d.NVADJPAT, d.NVPAIDPLAN,
       d.NVPAIDPAT, d.NVBALPLAN, d.NVBALPAT, d.NAPPTBAL, d.VPAYSTAT AS Status
From   pmvixtr d

INNER JOIN  pmptxft p ON p.IPATID = d.IPATID


Where @StartDate <= d.DSDATE AND @EndDate >= d.DSDATE


END
END
于 2013-08-28T12:26:59.403 回答
1

在您的选择语句中,您可以包含@StartDate、@EndDate

例如

select @StartDate, @EndDate, .... <rest of your select statement>...

我还建议在您的 where 子句中使用 Where d.DSDATE BETWEEN(@StartDate, @EndDate)

如果您不想在 @StartDate 和 @EndDate 为 NULL 时选择任何内容,那么在 WHERE 子句中使用它可能会非常昂贵......我建议有一个 if 条件

IF @StartDate IS NOT NULL AND @EndDate IS NOT NULL
select.....

END IF
于 2013-08-28T12:29:46.817 回答