• It seems to me that a bit of divide and conquer will make this run much faster... when you're all done, look for PatientID's that have a Parm of 5. Dunno if I put your parameters in the correct order or not...

    SELECT CAST(pd.TodayID AS INT) AS TodayID,pd.PreviousDayID,pd.PatientID,1 AS Parm

    INTO #TmpTable

    FROM [Patient Data] pd

    WHERE pd.[Open%] BETWEEN -1.61 AND -0.61

    AND pd.[High%] BETWEEN -0.28 AND 0.72

    AND pd.[Low%] BETWEEN -1.61 AND -0.61

    AND pd.[Close%] BETWEEN -1.39 AND -0.39

    INSERT INTO #TmpTable

    (TodayID,PreviousDayID,PatientID,Parm)

    SELECT pd.TodayID,pd.PreviousDayID,pd.PatientID,2 AS Parm

    FROM [Patient Data] pd,

    #TmpTable t

    WHERE t.TodayID = pd.PreviousDayID

    AND t.PatientID = pd.PatientID

    AND t.Parm = 1

    AND pd.[Open%] BETWEEN 1.07 AND 2.07

    AND pd.[High%] BETWEEN 1.29 AND 2.29

    AND pd.[Low%] BETWEEN -0.5 AND 0.5

    AND pd.[Close%] BETWEEN 1.29 AND 2.29

    INSERT INTO #TmpTable

    (TodayID,PreviousDayID,PatientID,Parm)

    SELECT pd.TodayID,pd.PreviousDayID,pd.PatientID,3 AS Parm

    FROM [Patient Data] pd,

    #TmpTable t

    WHERE t.TodayID = pd.PreviousDayID

    AND t.PatientID = pd.PatientID

    AND t.Parm = 2

    AND pd.[Open%] BETWEEN -0.5 AND 0.5

    AND pd.[High%] BETWEEN -0.5 AND 0.5

    AND pd.[Low%] BETWEEN -1.16 AND -0.16

    AND pd.[Close%] BETWEEN -0.5 AND 0.5

    INSERT INTO #TmpTable

    (TodayID,PreviousDayID,PatientID,Parm)

    SELECT pd.TodayID,pd.PreviousDayID,pd.PatientID,4 AS Parm

    FROM [Patient Data] pd,

    #TmpTable t

    WHERE t.TodayID = pd.PreviousDayID

    AND t.PatientID = pd.PatientID

    AND t.Parm = 3

    AND pd.[Open%] BETWEEN -0.5 AND 0.5

    AND pd.[High%] BETWEEN -0.06 AND 0.94

    AND pd.[Low%] BETWEEN -0.94 AND 0.06

    AND pd.[Close%] BETWEEN -0.5 AND 0.5

    INSERT INTO #TmpTable

    (TodayID,PreviousDayID,PatientID,Parm)

    SELECT pd.TodayID,pd.PreviousDayID,pd.PatientID,5 AS Parm

    FROM [Patient Data] pd,

    #TmpTable t

    WHERE t.TodayID = pd.PreviousDayID

    AND t.PatientID = pd.PatientID

    AND t.Parm = 4

    AND pd.[Open%] BETWEEN -0.94 AND 0.06

    AND pd.[High%] BETWEEN 0.38 AND 1.38

    AND pd.[Low%] BETWEEN -0.94 AND 0.06

    AND pd.[Close%] BETWEEN -0.5 AND 0.5

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)