Ho lo stesso calcolo in entrambe le clausole SELECT e GROUP BY. SQL Server sta effettivamente eseguendo questi calcoli due volte o è abbastanza intelligente da farlo solo una volta?
La semplice risposta è che SQL Server non fornisce garanzie generali su quando e quante volte verrà valutata un'espressione scalare al momento dell'esecuzione.
Esistono tutti i tipi di comportamenti complicati (e non documentati) all'interno dell'ottimizzatore e del motore di esecuzione per quanto riguarda il posizionamento, l'esecuzione e la memorizzazione nella cache delle espressioni scalari. Libri online non ha molto da dire al riguardo, ma ciò che dice è questo:

Questo descrive uno dei comportamenti a cui ho accennato prima, l'esecuzione differita delle espressioni. Ho scritto su alcuni degli altri comportamenti attuali (che potrebbero cambiare in qualsiasi momento) in questo post del blog .
Un'altra considerazione è che il modello di costo utilizzato da Query Optimizer attualmente non fa molto in termini di stima dei costi per le espressioni scalari. Senza un solido quadro dei costi, i risultati attuali si basano su una vasta euristica o pura probabilità.
Per espressioni molto semplici, probabilmente non fa molta differenza se l'espressione viene valutata una o più volte nella maggior parte dei casi. Detto questo, ho riscontrato grandi query in cui le prestazioni sono state influenzate negativamente quando l'espressione viene valutata in modo ridondante un numero molto elevato di volte, oppure la valutazione si verifica su un singolo thread in cui sarebbe stato vantaggioso valutare in un ramo parallelo dell'esecuzione Piano.
In sintesi, l'attuale comportamento non è definito e non c'è molto nei piani di esecuzione per aiutarti a capire cosa è successo (e non sarà sempre conveniente collegare un debugger per esaminare i comportamenti dettagliati del motore, come nel post del blog).
Se si verificano casi in cui i problemi di valutazione scalare sono importanti per le prestazioni, sollevare il problema con il supporto Microsoft. Questo è il modo migliore per fornire feedback per migliorare le versioni future del prodotto.