dkpage
@dkpage
Учусь

Как сформировать 12 столбцов, каждые 3 которые привязаны к значению другого столбца?

Tаблица: name, event, gold, silver, bronze
Строки:
Илья, 1, 5, 3, 4
Алексей, 1, 6, 3, 7
Илья, 2, 3, 5, 6
Илья, 3, 8, 3, 1
Алексей, 2, 5, 1, 1
Алексей, 3, 3, 4, 2

Как привести к такому виду таблицу с столбцами:
name, event_1_gold, event_1_silver, event_1_bronze, event_2_gold, event_2_silver, event_2_bronze
Илья, 5, 3, 4, 3, 5, 6
Пытался через pivot, не думаю что можно через него решить данную задачу.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Соедините таблицу саму с собой 4 раза, задав необходимые фильтры.
DECLARE @Temp TABLE ( [Name] VARCHAR(100), [Event] INT, Gold INT, Silver INT, Bronze INT )
INSERT @Temp VALUES
( 'Илья', 1, 5, 3, 4 ),
( 'Алексей', 1, 6, 3, 7 ),
( 'Илья', 2, 3, 5, 6 ),
( 'Илья', 3, 8, 3, 1 ),
( 'Алексей', 2, 5, 1, 1 ),
( 'Алексей', 3, 3, 4, 2 )
SELECT E1.[Name], 
       E1.Gold event_1_gold, E1.Silver event_1_silver, E1.Bronze event_1_bronze,
       E2.Gold event_2_gold, E2.Silver event_2_silver, E2.Bronze event_2_bronze,
       E3.Gold event_3_gold, E3.Silver event_3_silver, E3.Bronze event_3_bronze
  FROM @Temp AS E1
    JOIN @Temp AS E2 ON E1.[Name] = E2.[Name]
    JOIN @Temp AS E3 ON E1.[Name] = E3.[Name]
  WHERE E1.[Event] = 1
    AND E2.[Event] = 2
    AND E3.[Event] = 3
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы