2012-09-27 4 views
0

여기에서 나는 얼마나 많은 레코드가 기준을 충족하는지 계산하려고합니다. 따라서 앱의 타일에 총계로 표시 할 수 있습니다. 그러나 이것으로 성공을 거두지 못하고 있습니다. 카운트 방법과 위치를 알려주시겠습니까?쿼리에서 카운트가 필요합니다.

(
    @P_FACILITY_KEY_CSV VARCHAR(MAX) 
, @DATEFROM DATETIME 
, @DATETHRU DATETIME 
, @P_TOTALS NUMERIC(1, 0) 
) 
AS 
BEGIN 
      DECLARE @DFACKEY CHAR(4) 
      DECLARE @IRENEWALLCYCLEPERIOD NUMERIC 
      SET @IRENEWALLCYCLEPERIOD = OGEN.READ_PARAM(349, @P_FACILITY_KEY_CSV, '') 
      EXEC OGEN.GET_CODE_FACILITY @P_FACILITY_KEY_CSV, 'OGEN.GEN_M_DOCTOR_MAST', 'BASE', @DFACKEY OUTPUT; 

    IF @P_TOTALS = 1 BEGIN 

     SELECT P.NURSING_UNIT, 
       ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD) DUE_DATE, 
       CONVERT(NUMERIC, ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD) - GETDATE()) REMAINING 
       FROM OGEN.GEN_M_PATIENT_MAST P 
       LEFT OUTER JOIN OGEN.GEN_M_DOCTOR_MAST D ON P.PRIMARY_DOCTOR_KEY = D.DOCTOR_KEY AND D.FACILITY_KEY = @DFACKEY 
       LEFT OUTER JOIN OPTC.ORD_D_SCHEDULED_RECERTS SR ON P.PAT_NUMBER = - SR.PAT_NUMBER 
       LEFT OUTER JOIN OGEN.GEN_M_USER U ON U.USER_ID = SR.RECERT_BY 
       WHERE P.FACILITY_KEY IN(SELECT VALUE FROM OGEN.COMMA_TO_TABLE(@P_FACILITY_KEY_CSV)) 
       AND DISCHARGE_DATE IS NULL 
       AND (((@DATEFROM > 0) AND (OGEN.DATEONLY(ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD)) >= @DATEFROM)) 
        OR 
        (@DATEFROM = 0)) 
       AND (((@DATETHRU > 0) AND (OGEN.DATEONLY(ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD)) <= @DATETHRU)) 
        OR 
        (@DATETHRU = 0)) 

       ORDER BY REMAINING; 

    END ELSE BEGIN 

      SELECT P.*, D.DR_FULL_NAME PRIMARY_DOCTOR_NAME, 
       SR.RECERT_DATE, SR.RECERT_BY, U.USER_NAME, 
       ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD) DUE_DATE, 
       CONVERT(NUMERIC, ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD) - GETDATE()) REMAINING       
      FROM OGEN.GEN_M_PATIENT_MAST P 
      LEFT OUTER JOIN OGEN.GEN_M_DOCTOR_MAST D ON P.PRIMARY_DOCTOR_KEY = D.DOCTOR_KEY AND D.FACILITY_KEY = @DFACKEY 
      LEFT OUTER JOIN OPTC.ORD_D_SCHEDULED_RECERTS SR ON P.PAT_NUMBER = - SR.PAT_NUMBER 
      LEFT OUTER JOIN OGEN.GEN_M_USER U ON U.USER_ID = SR.RECERT_BY 
      WHERE P.FACILITY_KEY IN(SELECT VALUE FROM OGEN.COMMA_TO_TABLE(@P_FACILITY_KEY_CSV)) 
      AND DISCHARGE_DATE IS NULL 
      AND (((@DATEFROM > 0) AND (OGEN.DATEONLY(ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD)) >= @DATEFROM)) 
       OR 
       (@DATEFROM = 0)) 
      AND (((@DATETHRU > 0) AND (OGEN.DATEONLY(ISNULL(SR.USER_DEFINED_DUE_DATE, ISNULL(SR.RECERT_DATE, P.ADMIT_DATE) + @IRENEWALLCYCLEPERIOD)) <= @DATETHRU)) 
       OR 
       (@DATETHRU = 0)) 
      ORDER BY DUE_DATE 
    END 
END 

답변

4

반환되는 모든 레코드의 COUNT 인 추가 열을 쿼리에 추가 하시겠습니까?

SELECT COUNT(1) OVER() Total, 
     .. <all your other columns> .. 

또는 당신은 당신이합니다 (IF/SELECT들)을 보여 것을 가정하고, 마지막에 다음

RETURN @@ROWCOUNT 

의 SP 반환 값으로 반환 할 경우 SP의 끝입니다.

관련 문제