Estoy usando SQL Server 2008.¿Cómo hacer la adición y división de columnas con alias en una consulta?
Estoy tratando de hacer algunos cálculos básicos en algunas consultas básicas. Necesito sumar ganancias, pérdidas, total y porcentajes. Normalmente solicito los números brutos y luego hago los cálculos una vez que regreso mi consulta a la página. Me gustaría darle a SQL Server la oportunidad de trabajar un poco más.
Lo que quiero hacer es algo como esto:
SELECT SUM(case when vote = 1 then 1 else 0 end) as TotalWins,
SUM(case when vote = 0 then 1 else 0 end) as TotalLosses,
TotalWins + TotalLosses as TotalPlays,
TotalPlays/TotalWins as PctWins
Esto es lo que estoy haciendo ahora:
SELECT SUM(case when vote = 1 then 1 else 0 end) as TotalWins,
SUM(case when vote = 0 then 1 else 0 end) as TotalLosses,
SUM(case when vote = 1 then 1 else 0 end) + SUM(case when vote = 0 then 1 else 0 end) as Votes
¿Cuál es la forma más fácil y limpia de hacer cálculos matemáticos sencillos como este en ¿una consulta?
* EDIT: *
Aunque tengo algunas grandes respuestas, no he tenido lo que yo estaba buscando.
Las puntuaciones que seré el cálculo son para un equipo específico, así, mis resultados tienen que ser así:
TeamID Team Wins Losses Totals
1 A's 5 3 8
2 Bee's 7 9 16
3 Seas 1 3 4
SELECT T.TeamID,
T.Team,
V.TotalWins,
V.TotalLosses,
V.PctWins
FROM Teams T
JOIN
SELECT V.TeamID,
SUM(case when vote = 1 then 1 else 0 end) as V.TotWin,
SUM(case when vote = 0 then 1 else 0 end) as V.TotLoss
FROM Votes V
GROUP BY V.TeamID
He intentado un montón de cosas, pero no muy bien qué mal. Estoy seguro de que la parte JOIN es donde está el problema. ¿Cómo reúno estos dos conjuntos de resultados?
¡Interesante! Voy a darle un giro. –
'+ 1' - ¿Tal vez un CTE también funcionaría bien? –
@MikeChristensen: Sí, un CTE también funcionaría. –