Я хочу, чтобы выполнить этот запрос на официальном Teradata Express, для VMware Player (TDE 15.00.01 SLES 10 для VMware (40GB) с точки зрения):SQL Teradata порядок оценки случая, когда тогда еще
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;
Но Я получаю эту ошибку:
Executed as Single statement. Failed [2616 : 22003] Numeric overflow occurred during computation. Elapsed time = 00:00:00.115
STATEMENT 1: Select Statement failed.
Так что мой вопрос, что почему оператор ELSE оценивается, когда логика СЛУЧАЯ это правда? И как я могу запустить этот запрос? Мне нужны данные COUNT, MIN, MAX, AVG, SUM и т. Д. Из неизвестных таблиц, где я не знаю, содержит ли столбец цифры длиной 20 цифр или нет. Спасибо!
Не знаю много о teradata, но, возможно, вам просто нужно передать любое значение, которое вы передаете в SUM, MIN, MAX ... в более широкий тип данных (INT => BIGINT?), Чтобы он не переполнялся. (например, в SQL Server, например: http://stackoverflow.com/a/1222890/2186023) – DrCopyPaste