我想在官方 Teradata Express for VMware Player 上运行此查询(TDE 15.00.01 SLES 10 for VMware (40GB) with Viewpoint):
SELECT 'MaxValue' column_name,
COUNT("MaxValue") AS count_value,
COUNT(DISTINCT("MaxValue")) AS count_dist_value,
MIN("MaxValue") AS min_value,
MAX("MaxValue") AS max_value,
CASE WHEN max_value > 99999999999999 THEN 99999999999999
ELSE SUM("MaxValue") END AS sum_value
FROM (SELECT TOP 100 * FROM "DBC"."IdCol") AS xy;
但是我收到此错误:
作为单个语句执行。 失败 [2616:22003] 数字溢出 在计算过程中发生。 已用时间 = 00:00:00.115
语句 1:选择语句失败。
所以我的问题是,当 CASE 逻辑为 True 时,为什么要评估 ELSE 语句?如何运行此查询?我想要来自未知表的 COUNT、MIN、MAX、AVG、SUM 等信息,我不知道一列是否包含 20 位长的数字。谢谢!
根据DrCopyPaste的评论,解决方案是:
SELECT 'MaxValue' column_name,
COUNT("MaxValue") AS count_value,
COUNT(DISTINCT("MaxValue")) AS count_dist_value,
MIN("MaxValue") AS min_value,
MAX("MaxValue") AS max_value,
CASE WHEN max_value > 99999999999999 THEN 99999999999999
ELSE SUM(CAST("MaxValue" AS BIGINT)) END AS sum_value
FROM (SELECT TOP 100 * FROM "DBC"."IdCol") AS xy;
谢谢!