У меня есть две таблицы: Активы и Значения
Активы
unid|name|memory|brand|type|status|processor|supplier|hostname|building|datebought|user
---------------------------------------------------------------------------------------
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|Object1|null|null|null|null|null|null|null|null|null|null
2FFA7056-4C9B-4375-B14F-4A927A55BA0C|Object2|null|null|null|null|null|null|null|null|null|null
Значения
assetid|fieldname|textvalue
---------------------------
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|memory|16
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|brand|09e9a777-3899-48ed-a1e8-d50e4469e157
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|type|0261f606-1253-41d3-9b17-4464763bb187
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|status|4dde3e20-da2d-4e1e-a9d4-51039b74e6ca
2FFA7056-4C9B-4375-B14F-4A927A55BA0C|datebought|2017-11-20T23:00:00.000
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|processor|0536f0c2-46f3-4245-b8e8-41e092e03e44
2FFA7056-4C9B-4375-B14F-4A927A55BA0C|type|7380b254-6b40-42b8-9584-a16e6f14409e
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|supplier|c3ee564a-3a46-546f-82e4-7b42f21ec841
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|hostname|object1
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|building|0536f0c2-46f3-9995-b8e8-41e092e03e44
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|datebought|2017-06-14T22:00:00.000
D7930C14-3196-49DA-BAC9-9D03F5FA9E8F|user|ac2d9a93-f09c-5d13-bd78-7e3ba2a749e6
2FFA7056-4C9B-4375-B14F-4A927A55BA0C|brand|09e9a777-3899-48ed-a1e8-d50e4469e157
2FFA7056-4C9B-4375-B14F-4A927A55BA0C|supplier|c3ee564a-3a46-546f-82e4-7b42f21ec841
2FFA7056-4C9B-4375-B14F-4A927A55BA0C|status|4dde3e20-da2d-4e1e-a9d4-51039b74e6ca
Как видите, в таблице Активы есть много нулевых значенийстрок.Эти нулевые значения должны быть заполнены значениями из таблицы Values.
Это сложно для меня, потому что каждое значение в таблице Value находится в отдельной строке.Таким образом, несколько строк из значений необходимо обновить в столбцы в одной строке в активах.
Отношение между двумя таблицами: Assets.unid = Values.assetid
Я попытался использовать сводную строкуниже, но я все еще не знаю, как обновить данные в соответствующей строке.
select "memory", "brand", "type", "status", "processor", "supplier", "hostname", "building", "datebought", "user"
from
(
select cast(textvalue as varchar(max)) as textvalue, fieldname
from am_value
) d
pivot
(
max(textvalue)
for fieldname in ("memory", "brand", "type", "status", "processor", "supplier", "hostname", "building", "datebought", "user" )
) piv