Reputation: 3407
I have the following queries below. I'd like to use the aliases and add them together but SQL does not allow that. Any suggestions on how I can go about this without repeating the queries again? Using Microsoft SQL Server 2008
SELECT
SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END) As space,
SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END) As qpr,
(space + qpr) As result
FROM rg_fin As rg JOIN...../*query goes on*/
Upvotes: 3
Views: 12081
Reputation: 247710
If you want to use the alias, then you will need to wrap the query inside of another query:
SELECT space
, qpr
, space + qpr as result
FROM
(
SELECT
SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END) As space,
SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END) As qpr,
(space + qpr) As result
FROM rg_fin As rg JOIN...../*query goes on*/
) x
Or if you do not need to use the alias, then you can just repeat the fields:
SELECT
SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END) As space,
SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END) As qpr,
(SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END)
+ SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END)) As result
FROM rg_fin As rg JOIN...../*query goes on*/
Upvotes: 1
Reputation: 51494
You could wrap the query as a subquery
SELECT *,
(space + qpr) As result
FROM
(
SELECT
SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END) As space,
SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END) As qpr
....
) subquery
Upvotes: 5
Reputation: 13700
Use derived table
SELECT
space,qpr,(space + qpr) As result
FROM
(
SELECT
SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END) As space,
SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END) As qpr,
(space + qpr) As result
FROM rg_fin As rg JOIN...../*query goes on*/
) as t
Upvotes: 0
Reputation: 56477
You can do this with a subquery:
select
space,
qpr,
(space + qpr) As result
from (
select
SUM(CASE WHEN rg.category = 'Space' THEN ((rg.score*20)) END) As space,
SUM(CASE WHEN rg.category = 'QPR' THEN ((rg.score*20)) END) As qpr,
FROM rg_fin As rg JOIN...../*query goes on*/
) as a
Upvotes: 1