У нас есть частая проблема, с которой мы сталкиваемся во время ETL, и я надеюсь, что кто-то здесь решил ее раньше. Предположим, у нас есть три иерархические таблицы: заголовочная, подробная и транзакционная. Исходная система может обновить запись в любой из них и обновит только дату последнего изменения измененной таблицы. Когда мы запускаем ETL, нам нужно вытащить все заголовки и все их детали и транзакции, если какой-либо из уровней изменился.
Для строк мы можем использовать функцию max, но для столбцов есть ли простой способ вернуть самую высокую дату из трех отдельных столбцов? Мы могли бы сделать это с помощью вложенного оператора case, но это становится беспорядочным, когда у вас задействовано более 7 таблиц. Независимый от БД подход был бы замечательным, но мы используем Azure/SQL Server. Мы ценим любые предложения!