У меня есть две таблицы с отношениями родитель / ребенок.Я хочу обновить родителя с данными от ребенка.Однако, если предположить, что есть 2 дочерних элемента, я бы хотел выбрать, какой дочерний элемент используется для обновления, в зависимости от некоторого другого столбца дочернего элемента.Вот что у меня есть: Parent: @test Child: @exdat Ожидаемый результат, результат parent после обновления должен содержать только заглавные буквы.Я хочу обновить родителя некоторыми данными от ребенка, но если их больше, я бы предпочел выбрать ребенка с dimp с p1 над p2, p2 над p3 и p3 над p4
DECLARE @test TABLE
(
id int,
val char(1)
);
DECLARE @exdat TABLE
(
id int,
dval char(1),
dimp char(2)
);
INSERT INTO @test (id,val)
SELECT 1,'a'
UNION ALL SELECT 2,'b'
UNION ALL SELECT 3,'c'
UNION ALL SELECT 4,'d'
UNION ALL SELECT 5,'e'
UNION ALL SELECT 6,'f'
UNION ALL SELECT 7,'g'
;
INSERT INTO @exdat (id,dval,dimp)
SELECT 1,'A','p1'
UNION ALL SELECT 2,'B','p3'
UNION ALL SELECT 3,'C','p1'
UNION ALL SELECT 4,'D','p2'
UNION ALL SELECT 5,'E','p2'
UNION ALL SELECT 6,'F','p3'
UNION ALL SELECT 7,'w','p2'
UNION ALL SELECT 7,'g','p3'
UNION ALL SELECT 7,'G','p1'
UNION ALL SELECT 7,'z','p4'
;
UPDATE @test SET
val = e.dval
FROM
@test t
INNER JOIN @exdat e ON t.id = e.id
;
SELECT * FROM @test;
Result:
1 A
2 B
3 C
4 D
5 E
6 F
7 w <-- problem illustrated here
Это «w» могло быть любым из значений w, g, G, z.Поэтому я спрашиваю, как я могу расставить приоритеты для дочернего выбора, основываясь на каком-то другом столбце?