When you ask a question on the forums, you'll often get responses that certain ways of doing things are inefficient or that you should be doing things a different way. While that is true, there's a flip side to this. In a perfect world, you would always do things the most efficient way regardless of the cost. In the real world, you've got a lot of things to do and not always enough time to do them in. Compromises, unfortunately, must be made. Sometimes you go ahead and use that cursor or while loop on a report that only gets run once a month to save yourself from coming up with a much more complicated set based method. Sometimes you use a temp table you could have done without. What needs to be done to keep things moving isn't always the best solution, but it is often the best solution that you have time for.
"Premature Optimization is the root of all evil" - Sir Tony Hoare