• I'd almost rather MS stopped trying to improve T-SQL because they either leave out critical functionality of new features, deprecate and delete useful stuff, or things run slower than "Black Arts" methods and they also miss some really good stuff.

    For an example of leaving out "critical functionality", look what the first did to OVER... while its first rendition was very useful, indeed, it took them several revs to include Lead/Lag, which most other engines already had. Then, there things like PIVOT. If you've ever worked with Access, you know the PIVOT function there is absolutely incredibly easy to use and useful. The current rendition of PIVOT in SQL Server is almost a cruel joke.

    I know a whole lot of people will disagree but for the "deprecate and delete" example, I found that sp_MakeWebtask was incredibly useful for making DBA reports to email. There are many other examples but that was one of my favorites.

    For things that run "slower", OVER with Lead/Lag is a good example. The "Quirky Update" still whups even the fastest rendition.

    As to missing really good stuff, there's been a CONNECT item open for at least 7 years asking for a "Tally" generator. I forget how many years it's been that a BULK EXPORT request has been open. It would also be nice if they fixed BCP and BULK INSERT so that they're row sensitive and not just delimiter sensitive so that you could actually and easily skip disparate header rows. Adding a "footer skip" would be helpful, as well. Of course, MS says "Use SSIS" instead. Yeah... not me. Not sure it would be able to do those things any better anyway.

    --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)