Martin gav den här länken som ganska mycket förklarar vad som pågår - frågeoptimeraren har fria tyglar att ordna om saker som den vill. Jag tar med detta som ett svar så att jag kan acceptera något. Martin, om du skapar ett svar med din länk i den tar jag gärna emot det istället för det här.
Jag vill lämna min fråga här eftersom jag tycker att det är svårt att söka efter, och min specifika formulering av problemet kan vara lättare för någon annan att hitta i framtiden.
TSQL dividera med noll trots att inga kolumner innehåller 0
EDIT:När fler svar har kommit in är jag återigen förvirrad. Det verkar inte klart ännu när exakt optimeraren får utvärdera saker i select-klausulen. Jag antar att jag måste gå och hitta SQL-standarden själv och se om jag kan förstå den.