• Thanks for the suggestion!  You can't go wrong with Date, Celko and the rest of the gurus.

    I am with you on eliminating NULLs as much as possible; but as you also point out, sometimes they are the best/only tool SQL gives us to deal with missing information.  I think the key is to use NULLs with caution and keep in mind that they do affect your logic and overall results.

    As for your suggestion about storing salary information in a separate table, it makes sense; but when you do a LEFT JOIN on the salary table, you'll still have to deal with NULLs popping up in the result set.  One method I've used to deal with "Not Applicable" and other specific statuses is to use a CHAR(1) column as a status code flag to indicate the specific reason the data is missing.  It requires a little more programming logic on the front end, but it tends to be well worth it if the specific status information is important to your situation.

    I'm submitting a second piece to go along with this article that describes how NULLs affect results in ANSI aggregate functions - that seemed to be a big question on another discussion board here at SQL Server Central.

    Thanks again!