Я настраиваю инструмент, который сможет создать уникальный идентификатор из четырех переменных, но пока мой код ведет к полной базе данных tempdb. Даже если я использую только 1/10 данных, для которых я разрабатываю эту процедуру.
Я собираю данные через SSIS на SQL-сервер.
У меня есть таблица с исходными данными, это включает в себя
"RowID, ID1, ID2, возраст, пол, идентификатор случая, идентификатор здания, идентификатор ID1NotValid, имя файла"
RowID будет всегда установлен
ID1 не всегда установлен, но важен для нового uniqueId, то же самое для ID2
Возраст и пол являются двумя переменными справки, чтобы убедиться, что ID2 правильный, но они не всегда установлены.
Если есть ID2 с другим возрастом и / или полом, то, скорее всего, это другой человек, за исключением того, что ID1 также дан и в обоих случаях одинаков.
CaseId и BuildingId не всегда устанавливаются и подключаются к FileName, важно, чтобы эти идентификаторы были доступны в конце с новым uniqueId
ID1NotValid - это просто дополнительная информация, которая должна быть доступна в конце с новым uniqueId
Проблема в том, что ID1 и ID2 связаны друг с другом, но не всегда оба установлены, может быть, что ID1 установлен, а остальные нет.
Что я пытаюсь пройти через все эти случаи, чтобы получить таблицу со всеми типами идентификаторов. таблица, в которую я добавляю эти, генерирует уникальный идентификатор, добавляя данные после этого, я просто добавляю все остальные данные, такие как CaseID, BuildingID обратно в ID1 и ID2
INSERT INTO temptbl_getAllid1Andid2
SELECT RTRIM(LTRIM(id1)), RTRIM(LTRIM(id2)), RTRIM(LTRIM(age)), RTRIM(LTRIM(gender))
FROM dbo.tbl_ini_dat
WHERE id1 <> '' AND id2 <> ''
GROUP BY id1, id2, age, gender
INSERT INTO temptbl_getAllid1Andid2
SELECT RTRIM(LTRIM(id1)), RTRIM(LTRIM(id2)), RTRIM(LTRIM(age)), RTRIM(LTRIM(gender))
FROM dbo.tbl_ini_dat
WHERE id1 <> '' AND id2 = ''
AND id1 NOT IN (SELECT DISTINCT id1 FROM temptbl_getAllid1Andid2)
GROUP BY id1, id2, age, gender
INSERT INTO temptbl_getAllid1Andid2
SELECT RTRIM(LTRIM(id1)), RTRIM(LTRIM(id2)), RTRIM(LTRIM(age)), RTRIM(LTRIM(gender))
FROM dbo.tbl_ini_dat
WHERE id1 = '' AND id2 <> ''
AND id2 NOT IN (SELECT DISTINCT id2 FROM temptbl_getAllid1Andid2)
GROUP BY id1, id2, age, gender