Search code examples
sqlunionteradata-sql-assistant

Strings shortened when using UNION in Teradata SQL Assistant


When I perform a UNION between 2 tables, the strings are automatically shortened. I get "30 Days Active Su" and "120 Days Active S". When I run the query individually, without any UNION, I get the full form "30 Days Active Subs" and "120 Days Active Subs", which I require. Why is this so and how to go about correcting it?

Following is the code:

SELECT
'30 Days Active Subs' AS PROPERTY
,(DISTINCT SUBS.SUBSCRIBER_COUNT) AS SUBS_COUNT
FROM PMP_AVEW.FCT_SUBS_DLY_SNAP AS SUBS
WHERE SUBS.DAYS=30
GROUP BY 1

UNION

SELECT 
'120 Days Active Subs' AS PROPERTY
,(DISTINCT SUBS.SUBSCRIBER_COUNT) AS SUBS_COUNT
FROM PMP_AVEW.FCT_SUBS_DLY_SNAP AS SUBS
WHERE SUBS.DAYS=120

Solution

  • you need to cast this column.

    SELECT
    CAST('30 Days Active Subs' AS varchar(255)) AS PROPERTY
    ,(DISTINCT SUBS.SUBSCRIBER_COUNT) AS "30_DAYS_SUBS"
    FROM PMP_AVEW.FCT_SUBS_DLY_SNAP AS SUBS
    WHERE SUBS.DAYS=30
    GROUP BY 1
    
    UNION
    
    SELECT 
    '120 Days Active Subs' AS PROPERTY
    ,(DISTINCT SUBS.SUBSCRIBER_COUNT) AS "120_DAYS_SUBS"
    FROM PMP_AVEW.FCT_SUBS_DLY_SNAP AS SUBS
    WHERE SUBS.DAYS=120
    

    or you can use fixed length

     CAST('30 Days Active Subs' AS CHARACTER(20))