簡體   English   中英

SQL Teradata評估順序的大小寫

[英]SQL Teradata evaluation order of case when then else

我想在適用於VMware Player的正式Teradata Express上運行此查詢(帶有Viewpoint的VMware(40GB)的TDE 15.00.01 SLES 10):

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;

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM