• Preliminarily, here's the Query I would start with:

    ;WITH

    cteMeasure As

    (

    SELECT m.[Patient_ID], m.[MEASUREMENT_DATETIME]

    FROM [PROJECT].[dbo].[MEASURE] m

    WHERE m.[TYPE] IN('SYSTOLIC', 'SYSLIE', 'SYSSTAND')

    )

    , lateTime As

    (

    SELECT p.[Patient_ID], max(m.[MEASUREMENT_DATETIME]) AS lateMeasure

    FROM [PROJECT].[dbo].[PATIENT] p

    INNER JOIN [PROJECT].[dbo].[CONSULTATIONS] c ON p.[Patient_ID] = c.[Patient_ID]

    INNER JOIN cteMeasure m ON p.[Patient_ID] = m.[Patient_ID]

    WHERE [VISIT_DATE] >= '2010-02-07'

    AND m.[g_Site] = 'NSW_xxx_MC'

    GROUP BY p.[Patient_ID]

    HAVING COUNT(DISTINCT [VISIT_DATE]) >= 3

    )

    SELECT COUNT(UQ102.[Patient_ID])

    FROM

    (

    SELECT me.[Patient_ID]

    FROM cteMeasure me

    JOIN lateTime

    ON me.[Patient_ID] = lateTime.[Patient_ID]

    AND me.[MEASUREMENT_DATETIME] = lateTime.[lateMeasure]

    WHERE me.[MEASUREMENT] <> '' AND ISNUMERIC(me.[MEASUREMENT]) = 1

    AND ( ( me.[MEASUREMENT] <> '0'

    AND SUBSTRING(me.[MEASUREMENT], 1, 1) <> '0'

    AND SUBSTRING(me.[MEASUREMENT], 1, 3) >= '100' AND SUBSTRING(me.[MEASUREMENT], 1, 3) < '250'

    AND SUBSTRING(me.[MEASUREMENT], 2, 1) <> '.'

    )

    OR ( me.[MEASUREMENT] BETWEEN '0' AND '999'

    AND SUBSTRING(me.[MEASUREMENT], 1, 2) > '70'

    AND SUBSTRING(me.[MEASUREMENT], 2, 1) <> '.'

    )

    )

    GROUP BY me.[Patient_ID]

    ) UQ102

    It should be logically the same, so it may just produce the same query plan, but it has been simplified/reduced syntactically, so it's worht trying and seeing.

    [font="Times New Roman"]-- RBarryYoung[/font], [font="Times New Roman"] (302)375-0451[/font] blog: MovingSQL.com, Twitter: @RBarryYoung[font="Arial Black"]
    Proactive Performance Solutions, Inc.
    [/font]
    [font="Verdana"] "Performance is our middle name."[/font]