• I'm completely sick of anti-rbar preachers. They're just getting their ego kicks through trying to one-up everybody. Here is what is happening: code is being run on a VonNeumann architecture. Everything is procedurally processed in loops. Yes, even CTEs are loops - they're just running looping code in a compiled format instead of an interpreted format.

    Advantages of CTEs:

    1) Run faster

    2) Programmers get to display their ability to write one

    3) Works similar to nature in its fractal and recursive style

    Disadvantages of CTEs:

    1) Not reusable compared to functions

    2) Doesn't simplify the code one is actually working on

    3) Must be rewritten as a UDF when more complex logic is added that requires procedural processing

    The post originator specified this was a one-off job. Therefore, extra work in optimization is a complete waste. I gave him a general purpose function. I have hundreds of these that I can quickly put to use in importing weirdly formatted customer data. UDFs are very useful from many points-of-view; CTEs are advantageous from one point of view - production code where performance is top priority.