Как я могу преобразовать значения в одном столбце в заголовки новой таблицы? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть таблица с тремя столбцами, «Partnumber», «Спецификации» и «Значение», мне нужно создать таблицу со всеми данными в виде VARCHAR, в которой каждое значение в столбце «Спецификации» отображается как заголовок.

Я пытался использовать PIVOT, но не очень хорошо понял (я новичок); Я использую SQLServer.

Это первые строки в исходной таблице:

Partnumber|Specifications|Value|
181504825 |Rotation      |CW   |
1541      |Belt Width (_)|7/16 |
156938    |Depth (mm)    |73   |
1522231   |Grooves       |6    |
1522236   |Grooves       |4    |
1522348   |Grooves       |4    |
1541      |Grooves       |1    |
181504825 |Height (mm)   |107.95|
156938    |Inlet (mm)    |11.5 | 

Мне нужно создать новую таблицу, подобную этой:

Partnumber|Belt Width (_)|Depth (mm)|Grooves |Height (mm)|Inlet (mm)|Rotation|
1522231   |              |          |6       |           |          |        |
1522236   |              |          |4       |           |          |        |
1522348   |              |          |4       |           |          |        |
1541      |7/16          |          |1       |           |          |        |
156938    |              |73        |        |           |11.5      |        |
181504825 |              |          |        |107.95     |          |CW      |

Каждый номер компонента и заголовки должны отображаться без дубликатов, и по порядку некоторые номера могут появляться без информации, и я могу удалить строку позже. Хотелось бы отметить, что после удаления дубликатов столбец «Спецификации» содержит 981 заголовок.

1 Ответ

0 голосов
/ 20 июня 2019

использовать условное агрегирование

select Partnumber, max(case when Specifications='Rotation' then value end) as Rotation,
max(case when Specifications='Belt Width (_)|' then value end) as BeltWidth (_)|,
max(case when Specifications='Depth (mm)' then value end) as Depthmm,
max(case when Specifications='Grooves' then value end) as Grooves,
max(case when Specifications='Height (mm)' then value end) as Height,
max(case when Specifications='Inlet (mm)' then value end) as Inlet,
max(case when Specifications='Belt Width (_)' then value end) as belt
from table_name group by Partnumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...