В проекте, над которым я работаю, есть таблица единиц, а затем есть несколько таблиц, которые относятся к расположению единиц в данный момент времени, а также к другим факторам для данного момента времени.
Например, Unit1 может находиться в LocationA 01.01.2009 и иметь вторую запись местоположения, в которой Unit1 находится в LocationB 01.03.2010. Аналогично, Единица 1 может быть размером 1 от 20.02.2009 и размером 2 от 12 декабря 2010 года.
Структура стола
Table: Unit
int ID (identity, PK)
varchar Name
Table: Unit_Location
int OrgID (FK Unit.ID)
datetime eff_date
int LocationID (FK Location.ID)
Table: Unit_Size
int OrgID (FK Unit.ID)
datetime eff_date
int UnitSizeID (FK Size.ID)
Я хочу иметь представление, которое берет все изменения из различных таблиц изменений свойств и имеет строку для каждой даты, в которой единица отличается, и имеет текущие значения для всех свойств в этой строке. Таким образом, для приведенного выше примера представление должно выглядеть так:
1/1/2009 - Unit1 - LocationA - Null
2/20/2009 - Unit1 - LocationA - Size1
1/12/2010 - Unit1 - LocationA - Size2
3/1/2010 - Unit1 - LocationB - Size2
Если я сделаю полное внешнее объединение, основанное на датах вступления в силу, я полагаю, что могу легко добраться до:
1/1/2009 - Unit1 - LocationA - Null
2/20/2009 - Unit1 - Null - Size1
1/12/2010 - Unit1 - Null - Size2
3/1/2010 - Unit1 - LocationB - Null
Но это не совсем помогает мне достичь того, чего я хочу. Как должен выглядеть мой SQL, чтобы получить представление с полным статусом каждого модуля на каждую дату, когда что-то с модулем изменяется? enter code here