Функцию 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)
Используйте SetDisplayMode()
метод:
MyReportViewer.SetDisplayMode(DisplayMode.PrintLayout);