在Teradata中的列中设置MIN值

时间:2019-03-08 00:29:37

标签: sql teradata

我需要通过group by中的元素在所有列中设置最小值。该表的问题是列lastupdate,某些值包含'0001-01-01',因此当我应用MIN()时,它不能给我正确的值。

我尝试使用此代码,但不起作用。我想在所有列中分别使用MINperiod的{​​{1}}值。

coddoc

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

只需利用MIN()忽略NULL值的事实:

SELECT 
    period, 
    coddoc, 
    MIN(CASE WHEN lastupdate = '0001-01-01' THEN NULL ELSE lastupdate END) as lastupdate 
FROM table 
GROUP BY period, coddoc; 

NB:如@dnoeth所述,CASE表达式可以缩短为:

NULLIF(lastupdate, '0001-01-01')

答案 1 :(得分:1)

为什么不仅仅在where子句中进行过滤?

SELECT period, coddoc, MIN(lastupdate) as lastupdate 
FROM table 
WHERE lastupdate > '0001-01-01'
GROUP BY period, coddoc;