Я пытаюсь определить хороший способ обработки приведенного ниже сценария. Я имею следующие две таблицы базы данных вместе с образцами данных. Таблица 1 содержит распределения, сгруппированные по проекту. Проект может иметь один или несколько распределений. В дистрибутиве может быть одна учетная запись. У учетной записи есть процент, выделенный ей. Распределения могут быть изменены путем добавления или удаления учетной записи, а также изменения процентных ставок.SQL для вставки последней версии группы элементов
Таблица2 отслеживает распределение, присваивая номер версии каждому распределению. мне нужно, чтобы иметь возможность скопировать новые дистрибутивы из Table1 в Table2, но только при двух условиях:
1. the entire distribution does not already exist
2. the distribution has been modified (accounts added/removed or percentages changed).
Примечание: При копировании распределения из Table1 в Table2 Мне нужно сравнить все счета и проценты в пределах чтобы определить, существует ли она. При вставке нового дистрибутива мне нужно увеличить значение VersionID (max (VersionID) + 1).
Итак, в приведенном примере распределение (12345, 1) было изменено, добавив номер счета 7, а также изменив процентное распределение. Весь дистрибутив должен быть скопирован во вторую таблицу, увеличивая значение параметра VersionID до 3 в процессе.
базы данных в вопросе SQL Server 2005.
Table1
------
ProjectID AccountDistributionID AccountID Percent
12345 1 1 25.0
12345 1 2 25.0
12345 1 7 50.0
56789 2 3 25.0
56789 2 4 25.0
56789 2 5 25.0
56789 2 6 25.0
Table2
------
ID VersionID Project ID AccountDistributionID AccountID Percent
1 1 12345 1 1 50.0
2 1 12345 1 2 50.0
3 2 56789 2 3 25.0
4 2 56789 2 4 25.0
5 2 56789 2 5 25.0
6 2 56789 2 6 25.0
Hi Thomas! Спасибо за предложение. То, что я нахожу более жестким, определяет, когда нужно вставлять новую версию, потому что мне нужно сравнить то, что в настоящее время существует с тем, что вставляется, и только вставить весь набор, если он был изменен или он ранее не существовал. – Garett