Skip to content
Advertisement

Pivot data row to header using SQL in Postgresql

I get this result using SQL request:

NBR_TYPE         Count
-----------------------
0021              20
0022              19
0023              13 

But i want result like this :

0021           0022         0023
---------------------------------
20              19          13

Can anyone help me to achieve this using PosgreSQL and thanks.

Advertisement

Answer

If you have a predefined list of values, you can use conditional aggregation to pivot:

select
    max(count) filter(where nbr_type = '0021') "0021",
    max(count) filter(where nbr_type = '0022') "0022",
    max(count) filter(where nbr_type = '0023') "0023"
from mytable

This assumes that each nbr_type appears in just one row; otherwise, you possibly want to change the max() to a more meaningful aggregation function, such as sum() or avg().

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement