1

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

table1:

Manager | USER 
--------+------
John    | Tom  
John    | David
John    | Marry
James   | Henry

table2: сейчас пусто, но должно быть так:

Manager | User1 | User2 | User3
--------+-------+-------+-------
John    | Tom   | David | Marry
James   | Henry | null  | null 

Является ли это возможным?

1 ответ1

0

Если структура table2 фиксирована, как вы показали, вы можете вставить ожидаемый результат в нее с помощью запроса, подобного следующему:

INSERT INTO table2 (Manager, User1, User2, User3) 
SELECT
  Manager,
  MAX(CASE WHEN seq = 1 THEN [USER] END) AS User1,
  MAX(CASE WHEN seq = 2 THEN [USER] END) AS User2,
  MAX(CASE WHEN seq = 3 THEN [USER] END) AS User3
FROM (
  SELECT *,
    ROW_NUMBER() OVER (PARTITION BY Manager ORDER BY [USER]) AS seq
  FROM table1) t
GROUP BY
  Manager;

Но если структура table2 не является фиксированной, вам нужно использовать Dynamic SQL.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .