我需要通过group by中的元素在所有列中设置最小值。该表的问题是列lastupdate
,某些值包含'0001-01-01'
,因此当我应用MIN()
时,它不能给我正确的值。
我尝试使用此代码,但不起作用。我想在所有列中分别使用MIN
和period
的{{1}}值。
coddoc
感谢您的帮助。
答案 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;