Tôi đang sử dụng SQL Server 2008.Làm cách nào để bổ sung và phân chia các cột bí danh trong truy vấn?
Tôi đang cố gắng thực hiện một số phép toán cơ bản trong một số truy vấn cơ bản. Tôi cần cộng các thắng, thua, tổng và tỷ lệ phần trăm. Tôi thường yêu cầu các số liệu thô và sau đó thực hiện các phép tính khi tôi trả lại truy vấn của mình cho trang. Tôi muốn cho SQL Server cơ hội làm việc chăm chỉ hơn một chút.
Những gì tôi muốn làm là một cái gì đó như thế này:
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
Đây là những gì tôi đang làm bây giờ:
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
cách dễ sạch nhất để làm các phép tính toán đơn giản như thế này trong là gì một truy vấn?
* EDIT: *
Trong khi tôi có một số câu trả lời tuyệt vời, tôi đã không nhận được những gì tôi đang tìm kiếm.
Điểm mà tôi sẽ được tính là dành cho một nhóm cụ thể, vì vậy, kết quả của tôi cần phải được như thế này:
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
Tôi đã thử một bó của sự vật, nhưng hoàn toàn không biết những gì sai. Tôi chắc chắn phần JOIN là nơi mà vấn đề là mặc dù. Làm thế nào để tôi mang hai bộ kết quả này lại với nhau?
Thú vị! Tôi sẽ cho nó một vòng xoáy. –
'+ 1' - Có thể CTE cũng hoạt động tốt? –
@MikeChristensen: Có, CTE cũng sẽ hoạt động. –