При поиске через некоторые старые представления в нашей системе.Я натолкнулся на какое-то использование ценностной функции, которое, хотя я понимаю, что оно делает, не может понять, почему это было бы слишком сложным.Это из представления создания DDL.
SELECT
...
SUBSTR(
MAX(
CHAR(
VALUE(TABLEO.TIMESTAMPFIELD, TIMESTAMP(CURRENT_DATE, CURRENT_TIME))
)
||
TABLEP.VARCHARFIELD
),
27
)
...
FROM TABLEA
INNER JOIN TABLEB ON ...
INNER JOIN TABLEC ON ...
LEFT JOIN TABLED ON ...
LEFT JOIN TABLEE ON ...
LEFT JOIN TABLEF ON ...
LEFT JOIN TABLEG ON ...
LEFT JOIN TABLEH ON ...
LEFT JOIN TABLEI ON ...
LEFT JOIN TABLEJ ON ...
LEFT JOIN TABLEK ON ...
LEFT JOIN TABLEL ON ...
LEFT JOIN TABLEM ON ...
LEFT JOIN TABLEN ON ...
LEFT JOIN TABLEO ON ...
LEFT JOIN TABLEP ON ...
LEFT JOIN TABLEQ ON ...
WHERE .
GROUP BY ...
Я понимаю, что VALUE работает как COALESCE.SUBSTR оставит только VARCHAR (или NULL).Но если левое соединение не даст результатов, оно все равно будет нулевым.
Как вы можете догадаться, это представление является очень неэффективным рабочим битом SQL со всеми объединениями
Я разработчик SAP, работающий над ETL BODS, где данные будут использоваться в BOBJ WEBIотчет.Администраторы нашего проекта слишком молоды, чтобы понять причину этого.Подумайте, есть где-то более яркие умы, которые могут иметь некоторое понимание
РЕДАКТИРОВАТЬ:
LEFT JOIN TABLEO
ON TABLEO.ID_NOTE = TABLEN.ID_NOTE
AND TABLEO.ID_CASE = TABLEC.ID_CASE
AND TABLEO.ID_PRSN = TABLEA.ID_PRSN
AND TABLEO.CD_FTOF_CNTC = 'C'
LEFT JOIN TABLEP
ON TABLEP.ID_WORKER_ROLE = TABLEN.ID_CR
Значения в этих двух объединениях не имеют прямого отношения друг к другу.Только косвенно через другие результаты объединения.