【问题标题】:Finding minimum in teradata if values can be null also如果值也可以为空,则在 teradata 中找到最小值
【发布时间】:2014-12-18 14:41:30
【问题描述】:

我想在 teradata 中找到至少六个值。以下是我正在使用的逻辑,但是当任一字段中有空值时它会失败。我会很感激你在这方面的帮助。提前致谢。

CASE WHEN event.A1 <= event.A2 and event.A1 <= event.A3 and event.A1 <= event.A4 and event.A1
 <= event.A5 and event.A1 <= event.A6 THEN event.A1
     WHEN event.A2 <= event.A3 and event.A2 <= event.A4 and event.A2 <= event.A
WAITING_PICKUP_NOTELEFT and event.A2 <= event.A6 THEN event.A2
     WHEN event.A3 <= event.A4 and event.A3 <= event.A5 and event.EXC_DELI
VERY_ATTEMPT <= event.A6 THEN event.A3
     WHEN event.A4 <= event.A5 and event.A4 <= event.A6 THEN event.EXC_DELIVER
Y_ATT_NOTE
     WHEN event.A5 <= event.A6 THEN event.A5
     ELSE coalesce(event.A6,event.A5,event.A4,event.A3,event.A2,ev
ent.A1) END AS ZZZ

【问题讨论】:

  • 最简单的方法,但有很多文字:CASE WHEN event.A1 IS NOT NULL AND (event.A1 &lt;= event.A2 OR event.A2 IS NULL) AND ...

标签: case teradata minimum


【解决方案1】:

我想我会使用派生表一次性处理所有空逻辑,然后从中进行选择。比如:

SELECT
  CASE WHEN t1.a1 <= t1.a2 and t1.a1 <= t1.a3...

FROM
  (Select 
   coalesce(event.A1,0), --don't know what the data type is, replace accordingly
   coalesce(event.A2,0),
...) t1

它仍然有点难看,但我认为它仍然会更简单。

编辑: 我可能过于简单了,但如果您使用的是 TD 14,您可以查看 LEAST 函数:

SELECT LEAST(event.a1,event.a2,event.a3,...)

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多