0

これは、Crystal Report に接続しているストアド プロシージャであり、日付が null の場合はレポートに何も表示されませんが、日付に値がある場合はその値が出力されるなどのパラメーターから取得する開始日と終了日を返したいと考えています。

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

selectステートメントには、@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 に答える