Средство просмотра Отчета о силе с практическими рекомендациями, которое покажут в режиме предварительного просмотра

Функцию COALESCE можно использовать для замены текущей даты GETDATE() нулевыми значениями. Это также можно сделать с помощью функции ISNULL, однако COALESCE является стандартом ANSI, который позволяет использовать его на нескольких платформах баз данных, если это необходимо. Исходя из вашего вопроса, похоже, что вы хотите использовать текущую дату, только когда все значения в этом столбце равны нулю, поэтому COALESCE находится за пределами функции MAX. Если вы хотите заменить любые нули на текущую дату, то сравните их с ненулевыми значениями, которые необходимо поместить в функцию COALESCE внутри MAX.

(
SELECT 
JCDS_SOGR.OBJNR, JCDS_SOGR.STAT, TJ02T.TXT30, DATEDIFF(DAY,MIN(JCDS_SOGR.UDATE), COALESCE(MAX(JCDS_SOGR.UDATE), GETDATE()))
AS DIF
FROM JCDS_SOGR
JOIN TJ02T ON JCDS_SOGR.STAT = TJ02T.ISTAT
WHERE JCDS_SOGR.OBJNR = 'IE000000000010003791'
AND TJ02T.SPRAS = 'E'
GROUP BY JCDS_SOGR.OBJNR,JCDS_SOGR.STAT,TJ02T.TXT30) 

UNION ALL

(
SELECT JCDS_SOGR.OBJNR, JCDS_SOGR.STAT, TJ30T.TXT30, DATEDIFF(DAY,MIN(JCDS_SOGR.UDATE), COALESCE(MAX(JCDS_SOGR.UDATE), GETDATE()))
AS DIF
FROM JCDS_SOGR
JOIN TJ30T ON JCDS_SOGR.STAT = TJ30T.ESTAT
WHERE JCDS_SOGR.OBJNR = 'IE000000000010003791'
AND TJ30T.SPRAS = 'E'
AND TJ30T.MANDT='400'
AND TJ30T.STSMA = 'VEHICLE'
GROUP BY JCDS_SOGR.OBJNR,JCDS_SOGR.STAT,TJ30T.TXT30)
9
задан FerranB 16 February 2009 в 11:26
поделиться