Search code examples
sqlpostgresqlpivotcrosstab

Display fields in a row


I have a multi select query

SELECT C.CATEGORIES_NAME 
FROM CATEGORIES AS C 
WHERE CATEGORIES_ID = 1

UNION

SELECT L.LOCATION_TYPE_NAME 
FROM LOCATIONS_TYPE AS L 
WHERE LOCATION_TYPE_ID = 2 

UNION

SELECT S.SUBSCRIPTION_TYPE 
FROM SUBSCRIPTIONS AS S 
WHERE SUBSCRIPTION_ID = 3

He gives me the result:

 CATEGORIES_NAME |
------------------
       free      |
       Plaza     |
      Mobiles    |

And I need to get this result:

 CATEGORIES_NAME | LOCATION_TYPE_NAME | SUBSCRIPTION_TYPE |
-----------------------------------------------------------
       free      |       Plaza        |      Mobiles      |

How can this be done?


Solution

  • I think the simplest solution is to basically put SELECT before the queries:

    SELECT (SELECT C.CATEGORIES_NAME 
            FROM CATEGORIES AS C 
            WHERE CATEGORIES_ID = 1
           ) as CATEGORIES_NAME,
           (SELECT L.LOCATION_TYPE_NAME 
            FROM LOCATIONS_TYPE AS L 
            WHERE LOCATION_TYPE_ID = 2
           ) as LOCATION_TYPE_NAME,
           (SELECT S.LOCATION_TYPE_NAME 
            FROM SUBSCRIPTIONS AS S 
            WHERE SUBSCRIPTION_ID = 3
           ) as LOCATION_TYPE_NAME;