There are plenty of good books, but I haven't read them.
The last programming class I took was Fortran-77 back in my college days (think early 90's).
I can't answer you regarding the best way to learn this stuff because it depends on your personality. Some prefer classes, others prefer books. Me... I prefer tek-tips! I've learned more about SQL programming here than anywhere else (which is probably the number 1 reason why I help others).
Click on the FAQ's button at the top of this page. There is a FAQ's devoted to SQL Books.
In my opinion, it is more important to know 'what is available' than it is to know how to use it. For example, I'm sure you didn't know about DateDiff function. Likewise, there are probably many other functions that you are also unaware of.
If you are using Query Analyzer to build your queries, then do this...
1. Make sure the 'object browser' is visible. If you don't see it, then press F8 on your keyboard.
2. Scroll down to 'common objects'.
3. Expand each branch to see a list of functions that are available to you.
4. Read through the list. It's not important that you know how each function works. What's important is that you know what functions are available.
I hope this helps.
-George
Strong and bitter words indicate a weak cause. - Fortune cookie wisdom