7
votes

Pouvez-vous faire un autre quand sur un cas

    ----

    USE [PRO]
    GO

    /****** Object: StoredProcedure [dbo].[GET_SCHEDULE_ALL_DETAIL] Script Date: 11/02/2011 14:14:50 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO


    alter PROC [dbo].[GET_SCHEDULE_ALL_DETAIL]
    @FACILITYKEY varchar(1000),
    @UNITSTR VARCHAR(100),
    @FromDate datetime,
    @ToDate datetime
    AS
    BEGIN

    (SELECT S.FACILITY_KEY, S.PAT_NUMBER, S.A3A_DATE_USER, M.REFERENCE_DATE ,
    RTRIM(P.LAST_NAME) + CASE WHEN RTRIM(P.FIRST_NAME) <> '' THEN ', '
    ELSE ''
    END + RTRIM(P.FIRST_NAME) PATIENT_NAME
    ,CASE WHEN P.NURSING_UNIT is not null THEN P.NURSING_UNIT ELSE '' END NURSING_UNIT
    ,CASE WHEN P.UNIT_CODE is not null THEN P.UNIT_CODE ELSE '' END UNIT_CODE, 
    CASE WHEN M.SIGN_DATE IS NOT NULL THEN 'COMPLETED' ELSE 
    WHEN M.SIGN_DATE IS NULL THEN 'UNCOMPLETED' AS ASSESSMENTS
    FROM [PC].MDS_M_SCHEDULE S INNER JOIN OPTC.MD3_M_MAST M
    ON S.PAT_NUMBER=M.PAT_NUMBER
    LEFT JOIN OGEN.GEN_M_PATIENT_MAST P ON S.PAT_NUMBER = P.PAT_NUMBER
    WHERE S.PAT_NUMBER=M.PAT_NUMBER AND M.REFERENCE_DATE < GETDATE()
    AND S.A3A_DATE_USER BETWEEN @FromDate AND @ToDate
    AND S.FACILITY_KEY IN (SELECT Value FROM dbo.ListToTable(@FACILITYKEY,','))
    AND ( @UNITSTR IS NULL
    OR @UNITSTR = ''
    OR CHARINDEX(P.UNIT_CODE, @UNITSTR)% 2 = 1 ))

    UNION ALL

    (SELECT * FROM (
    (SELECT S.FACILITY_KEY, S.PAT_NUMBER, S.A3A_DATE_USER, M.REFERENCE_DATE ,
    RTRIM(P.LAST_NAME) + CASE WHEN RTRIM(P.FIRST_NAME) <> '' THEN ', '
    ELSE ''
    END + RTRIM(P.FIRST_NAME) PATIENT_NAME
    ,CASE WHEN P.NURSING_UNIT is not null THEN P.NURSING_UNIT ELSE '' END NURSING_UNIT
    ,CASE WHEN P.UNIT_CODE is not null THEN P.UNIT_CODE ELSE '' END UNIT_CODE, 'LATE' AS ASSESSMENTS
    FROM [PC].MDS_M_SCHEDULE S INNER JOIN OPTC.MD3_M_MAST M
    ON S.PAT_NUMBER=M.PAT_NUMBER
    LEFT JOIN OGEN.GEN_M_PATIENT_MAST P ON S.PAT_NUMBER = P.PAT_NUMBER
    WHERE M.REFERENCE_DATE < GETDATE() AND S.A3A_DATE_USER BETWEEN @FromDate AND @ToDate
    AND ( @UNITSTR IS NULL
    OR @UNITSTR = ''
    OR CHARINDEX(P.UNIT_CODE, @UNITSTR)% 2 = 1 )
    ) --Started

    UNION ALL

    (SELECT S.FACILITY_KEY, S.PAT_NUMBER, S.A3A_DATE_USER, NULL AS REFERENCE_DATE,
    RTRIM(P.LAST_NAME) + CASE WHEN RTRIM(P.FIRST_NAME) <> '' THEN ', '
    ELSE ''
    END + RTRIM(P.FIRST_NAME) PATIENT_NAME
    ,CASE WHEN P.NURSING_UNIT is not null THEN P.NURSING_UNIT ELSE '' END NURSING_UNIT
    ,CASE WHEN P.UNIT_CODE is not null THEN P.UNIT_CODE ELSE '' END UNIT_CODE, 'LATE' AS ASSESSMENTS
    FROM [PC].MDS_M_SCHEDULE S INNER JOIN OPTC.MD3_M_MAST M
    ON S.PAT_NUMBER=M.PAT_NUMBER
    LEFT JOIN OGEN.GEN_M_PATIENT_MAST P ON S.PAT_NUMBER = P.PAT_NUMBER
    WHERE S.PAT_NUMBER NOT IN (SELECT M.PAT_NUMBER FROM [PC].MD3_M_MAST M)
    AND S.A3A_DATE_USER < GETDATE() AND S.A3A_DATE_USER BETWEEN @FromDate AND @ToDate
    AND ( @UNITSTR IS NULL
    OR @UNITSTR = ''
    OR CHARINDEX(P.UNIT_CODE, @UNITSTR)% 2 = 1 )) --Not Started
    ) LATE
    WHERE FACILITY_KEY IN (SELECT Value FROM dbo.ListToTable(@FACILITYKEY,',')))

    END

    GO
sql

0 commentaires

4 Réponses :


5
votes

Je pense que vous pouvez simplement supprimer cela d'autre avant le moment et ajouter une fin avant «comme évaluations» xxx


2 commentaires

sortir l'autre - il ne compile pas


@Booksman: Je ne sais pas pourquoi vous avez une erreur de compilation, mais c'est la meilleure réponse (ou au moins la plus simple). Plusieurs quand Les déclarations agissent comme un "autre quand". MSDN.MicRosoft.com/en-us/Library/ms181765.aspx



3
votes

Changer cette partie:

CASE WHEN M.SIGN_DATE IS NOT NULL THEN 'COMPLETED' ELSE 'UNCOMPLETED' END


1 commentaires

Cela compile mais les bombes d'application sur les «évaluations» manquantes



13
votes

Non, sinon est une capture. Dans votre exemple, ce n'est pas clair pourquoi vous voudriez inclure une condition dans la clause d'essentiel, car vous avez déjà vérifié la condition logiquement opposée dans le premier lorsque expression.

Cependant, plus généralement , vous pouvez nier des expressions de cas, ce qui ressemblerait à ceci: xxx


0 commentaires

2
votes

standard sql: xxx

si votre fournisseur fournit un remplacer () fonction: xxx


0 commentaires