Member 13898659 Ответов: 1

Sql, как сделать представление с помощью таблицы путем преобразования строк в столбцы


Привет

пожалуйста, мне нужна ваша помощь.
Я пытаюсь сделать представление в SQL, во-первых, если у меня есть эта таблица:

Код по
1 а
2 а
3 а
4 Б
5 а
6 С
7 D
8 е

Как я могу сделать представление с помощью select to и представление даст мне такую таблицу:

Код По По По По По Б С Д Е
1 A B C D E
2 а - - - -
3 а - - - -
4 а - - - -

и здесь идентификатор будет автоматически увеличиваться.

Надеюсь, все ясно. Мне очень жаль, но я много пытался решить эту проблему, и мне это действительно нужно, так что, пожалуйста, ребята, помогите мне.

Большое спасибо за все это

Что я уже пробовал:

Я не нашел хорошего пути и все мои попытки были очень далеки от того что я ищу

0x01AA

Ключевое слово - "Pivot". Вы можете погуглить для него "SQL pivot". Я не знаком с ним, но я более или менее уверен, что вы получите более или менее скоро ответ здесь ;)

Member 13898659

Большое спасибо :)

1 Ответов

Рейтинг:
0

CHill60

Совершенно непонятно, как перейти от исходных данных к ожидаемым, поскольку данные в итоговой таблице не представляют того, что было в оригинале.

Однако, как заявил @0x01AA, в какой-то момент вам нужно использовать PIVOT. Здесь есть короткий совет по CodeProject, который дает хороший простой пример:Простой способ использования Pivot в SQL-запросе[^]

Вот пример того, что вы можете сделать со своими исходными данными:

create table #demo (ID integer identity(1,1), Po varchar(10))
insert into #demo (Po) values
('A'), ('A'), ('A'), ('B'), ('A'), ('C'), ('D'), ('E')

SELECT *
FROM (
    SELECT ID, Po
        FROM #demo
) as s
PIVOT
(
    COUNT(ID)
    FOR [Po] IN (A, B, C, D, E)
)AS pvt
Что и дает результаты
A	B	C	D	E
4	1	1	1	1
Если вы хотите сделать что-то другое, вы можете поместить это в общее табличное выражение (CTE). В SQL волшебства Часть третья - общие табличные выражения (CTE-выражений)[^]

Вы также упомянули идентификатор автоматического увеличения в своих результатах. Маловероятно, что это будет идентификатор из вашей таблицы... Хороший способ получить аналогичный результат в результатах-использовать НОМЕР СТРОКИ[^] функция. Вот тривиальный пример использования тех же данных, что и выше:
SELECT ID, Po, ROW_NUMBER() OVER (ORDER BY ID DESC)
FROM #demo
ORDER BY ID

Если я далеко от базы с этим просто ответьте и я постараюсь помочь дальше