Home > Mobile >  Custom row cell in SQL
Custom row cell in SQL

Time:11-04

So I'm looking to use a custom row cell to label my data.

Basketball Baseball Golf Cost
1 0 0 $50
0 1 0 $75
1 0 1 $150
0 1 1 $225

The table I have is above. What I'm trying to do is below:

OUTPUT:

Sport Cost
Basketball 200
Baseball 300
Golf 375

I can get the sum of each sport but I'm having trouble making an alias for each sport on the output table (The first column)

How would I go about that? I've done an alias for a column header, but never for a row cell.

Thanks in advance!

CodePudding user response:

select   game
        ,sum(cost*flg) as cost
        
from t 
     cross join lateral (
     values 
            (basketball, 'basketball')
           ,(baseball, 'baseball')
           ,(golf, 'golf')
                        ) t2(flg, game)
group by game
game cost
golf 375
baseball 300
basketball 200

Fiddle

CodePudding user response:

Use a UNION with different WHERE conditions:

select sport, sum(cost)
from 
( 
  select 'Basketball' as sport, cost
  from the_table 
  where basketball = 1
  union all
  select 'Baseball', cost
  from the_table 
  where baseball = 1
  union all
  select 'Golf', cost
  from the_table 
  where golf = 1
) t
group by sport;
  • Related