Данные пары ключ / значение UnPivot с несколькими объединенными значениями - PullRequest
0 голосов
/ 09 июля 2020

У меня есть таблица (атрибут) данных, которая, по сути, представляет собой таблицу пар ключ / значение с парой дополнительных полей:

SeqNum | ProductSeqNum | Name   | Value   | TypeID  | Include 
--------------------------------------------------------------
1      | 5             | Color  | Silver  | D       | Y
2      | 5             | Height | 10inch  | P       | N
3      | 5             | Weight | 3lbs    | P       | N
4      | 5             | Shape  | Round   | P       | N
5      | 6             | Color  | Gold    | D       | Y
6      | 6             | Height | 6inch   | P       | N
7      | 6             | Weight | 2lbs    | P       | N
8      | 6             | Shape  | Square  | P       | N

SeqNum - это PK для таблицы, ProductSeqNum - это FK в другую таблицу, которая идентифицирует продукт, Name / Value - это пара ключ / значение, а TypeID и Include - вспомогательные поля, которые важны, но их значение не имеет значения.

Когда я переворачиваю данные, это выглядит как это:

ProductSeqNum | Color              | Height             | Weight            | Shape
---------------------------------------------------------------------------------------------------
5             | (1) (D) (Y) Silver | (2) (P) (N) 10inch | (3) (P) (N) 3lbs  | (4) (P) (N) Round
6             | (5) (D) (Y) Gold   | (6) (P) (N) 6inch  | (7) (P) (N) 2lbs  | (8) (P) (N) Square

Я объединяю поля SeqNum, TypeID и Include со значением. Например, столбец Color для ProductSeqNum 5 имеет (1), который является SeqNum, (D), который представляет собой TypeID, (Y), который означает Include, и Silver, который является цветом.

Причина, по которой я Это позволит кому-то просматривать данные в Excel и вносить изменения, не просматривая 4 строки данных для каждого продукта. На самом деле, человек, просматривающий данные и редактирующий, будет смотреть на сотни продуктов одновременно.

Мне нужно выяснить, как Отменить поворот этого набора данных обратно в записи, которые я могу использовать для обновления MS SQL база данных (Express редакция). Причина, по которой я объединяю SeqNum со значением, заключается в том, что это уникальный идентификатор записи, который мне нужен для запроса на обновление. Допустим, в данные были внесены следующие изменения по сравнению с приведенной выше сводной таблицей; Мне нужно выяснить, как отключить это и обновить TypeID, Include и Value для каждой записи (с 1 по 8).

ProductSeqNum | Color              | Height             | Weight            | Shape
---------------------------------------------------------------------------------------------------
5             | (1) (D) (Y) Black  | (2) (D) (Y) 9inch  | (3) (D) (Y) 4lbs  | (4) (P) (N) Round
6             | (5) (D) (Y) White  | (6) (D) (Y) 16inch | (7) (D) (Y) 7lbs  | (8) (P) (N) Square
...