【问题标题】:Strings shortened when using UNION in Teradata SQL Assistant在 Teradata SQL 助手中使用 UNION 时字符串缩短
【发布时间】:2020-01-16 22:18:00
【问题描述】:

当我在 2 个表之间执行 UNION 时,字符串会自动缩短。我得到“30 Days Active Su”和“120 Days Active S”。当我单独运行查询时,没有任何 UNION,我得到了我需要的完整形式“30 天活动订阅者”和“120 天活动订阅者”。为什么会这样?如何改正?

以下是代码:

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

【问题讨论】:

  • 请注意,在第二个 SELECT 上提供不同的别名是没有用的。无论如何,该列将称为“30_DAYS_SUBS”,这对于来自第二个 SELECT 的记录会产生很大的误导,因此您最好选择一个更通用的名称,例如“SUBS_COUNT”。

标签: sql union teradata-sql-assistant


【解决方案1】:

您需要转换此列。

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

或者你可以使用固定长度

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

【讨论】:

  • “120 天活跃 S”、“30 天活跃 Su”。 Stil 在铸造和应用 varchar(255) 后给出了这个
  • 使用固定长度CAST('30 Days Active Subs' AS CHARACTER(20))
猜你喜欢
  • 2020-12-07
  • 2017-07-19
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 2019-01-29
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多