SQL-запрос - добавить записи во все категории - PullRequest
0 голосов
/ 02 мая 2019

У меня есть таблица с этими данными:

ID       ENTRYID      ORDERID     NAME       VALUE
-----------------------------------------------------
1        123          1           Product    AAA
2        123          1           Product    BBB
3        123          2           Type       Consumer
4        123          3           Category   Device
5        123          4           Vendor     CompanyName

ENTRYID - это значение для идентификации связанных строк (группы записей).

Мне нужны данные в следующем формате:

Product        Name              Value
-------------------------------------------
AAA            Type              Consumer
AAA            Category          Device
AAA            Vendor            CompanyName
BBB            Type              Consumer
BBB            Category          Device
BBB            Vendor            CompanyName

Так что в основном из группы записей выше foreach Product, где ORDERID = 1 или NAME = Product Мне нужно добавить другие детали. Таким образом, в данном случае продуктами являются AAA и BBB, и для каждого из них мы добавляем тип, категорию и поставщика. Для каждой группы записей может быть один или несколько продуктов с одинаковым ENTRYID.

Я пытался сделать что-то вроде этого:

SELECT 
     CASE WHEN NAME = 'Product' THEN Value END AS PRODUCT,
     …
FROM MYTABLE

Это дает мне продукты в одной колонке, но перечислены только дважды

PRODUCT 
---------------
AAA
BBB

1 Ответ

1 голос
/ 02 мая 2019

Исходя из ваших примеров данных, я думаю, что этот запрос будет делать то, что вы хотите. Он выбирает все значения Product для данного ENTRYID, а затем JOIN s для всех значений, не являющихся продуктами для этого ENTRYID:

SELECT P.VALUE AS Product, N.NAME AS Name, N.VALUE AS Value
FROM (SELECT ENTRYID, VALUE
      FROM test
      WHERE NAME = 'Product') P
JOIN (SELECT ENTRYID, NAME, VALUE
      FROM test
      WHERE NAME != 'Product') N ON N.ENTRYID = P.ENTRYID

Выход:

Product     Name        Value
AAA         Type        Consumer
AAA         Category    Device
AAA         Vendor      CompanyName
BBB         Type        Consumer
BBB         Category    Device
BBB         Vendor      CompanyName

Демонстрация по dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...