• Look for articles/books by Itzik Ben-Gan. He is great with T-SQL (I think's that his entire job :-)).

    I also liked Ken Henderson's stuff, particularly "The Guru's Guide to Transact-SQL". I don't know if/what the latest release/version of this is.

    Finally, search the net for "T-SQL challenges", try coding them -- before reading their solution(s) of course :-).

    If you want a quick simple SQL not T-SQL challenge, try this:

    A studentgrade table has one row per student and test. Each student may have taken anywhere from 0 to 3 (never more) tests.

    studentgrade --> (studid int, test# int, score int)

    Write a single query -- no subqueries, joins, CTEs, etc. -- that lists:

    studentid

    # of tests taken

    hi score (if only one test, it shows here)

    mid score (if only two tests, 2nd shows here; if only one test, will be null)

    low score (will only be non-null if all 3 tests are found for that student)

    Scott Pletcher, SQL Server MVP 2008-2010