У меня есть две таблицы: таблица этапов и таблица целей. Я хочу, чтобы в моей целевой таблице содержались действительные значения CustomerScore. В настоящее время мы вставляем в сцену и загружаем в наш целевой стол. Мы не хотим загружать недопустимые значения (-8.0000). Однако, если в нашей целевой таблице есть customerNumber с допустимым значением, мы хотели бы вывести номера из списков, присвоив ему customerScore из (-8,0000). Это должно быть единственное время, когда это значение попадает в целевую таблицу, поэтому запись для этого CustomerNumber уже должна быть в целевом объекте, чтобы обновить эту запись, которая в данный момент находится в целевой таблице. Моя инструкция создания ниже
CREATE TABLE stg.CustomerAppreciation (
CustomerId INT identity(1, 1)
,CustomerNumber VARCHAR(50)
,CustomerScore DECIMAL(5, 4)
);
CREATE TABLE ods.CustomerAppreciation (
CustomerId INT identity(1, 1)
,CustomerNumber VARCHAR(50)
,CustomerScore DECIMAL(5, 4)
);
В настоящее время в моей целевой таблице есть две записи, каждая из которых ниже относится к моим полям создания таблицы.
1 123 0.8468
2 143 1.0342
Теперь допустим, что мы хотим вывести из эксплуатации CustomerID = 2, потому что в промежуточную стадию вставлена запись как
3 143 -8.0000
Целевая таблица должна быть обновлена для этого CustomerNumber. Создание моей целевой таблицы выглядит следующим образом:
1 123 0.8468
2 143 -8.0000
Это должно быть единственным разом, когда мы разрешаем -8,0000 в таблицу, когда уже существует CustomerNumber. Если customerNumber не существует в целевой таблице и по какой-то причине в подготовке указывается -8.0000, его нельзя допускать. Как мне написать запрос на обновление, который обновляет запись в моей целевой таблице, только если этот сценарий существует и предотвращает - 8.0000 от входа, если он не существует?