• Interesting, because I had thought that any function that took no parameters or a hard coded value parameter would only be evaluated once and would return the same value for every record in the returning record set. Examples of this are Rand() and GetDate(). So it appears that NewID() is an exception.

    The fact that Rand() returns the same value for every record has been a source of frustration and innumerable forum threads over the years.

    Absolutely!

    Also note that, while this approach is great in that you don't need to make any assumptions about the table's schema, it's pretty bad from a performance point of view - I think the whole table gets loaded in to memory. That might not be a problem in many cases, but if your table is large ...