• This could still be optimized but will perform a little better than my previous query:

    --OUTPUT

    SELECT e.MSKEY AS NUMBER,

    ISNULL(fn.AVALUE,'') AS FNAME,

    ISNULL(mn.AVALUE,'') AS MNAME,

    ISNULL(ln.AVALUE,'') AS LNAME,

    ISNULL(em.AVALUE,'') AS EMAIL

    FROM Entries e

    LEFT JOIN Entries fn

    ON e.MSKEY=fn.MSKEY AND fn.ATTRNAME='FNAME'

    LEFT JOIN Entries ln

    ON e.MSKEY=ln.MSKEY AND ln.ATTRNAME='LNAME'

    LEFT JOIN Entries mn

    ON e.MSKEY=mn.MSKEY AND mn.ATTRNAME='MNAME'

    LEFT JOIN Entries em

    ON e.MSKEY=em.MSKEY AND em.ATTRNAME='EMAIL'

    WHERE e.ATTRNAME=fn.ATTRNAME

    "I cant stress enough the importance of switching from a sequential files mindset to set-based thinking. After you make the switch, you can spend your time tuning and optimizing your queries instead of maintaining lengthy, poor-performing code."

    -- Itzik Ben-Gan 2001