Я пытаюсь создать динамическую сводную таблицу для получения результатов в разных столбцах, а не в строках.Динамические сводные таблицы MS SQL 2008
Это таблица, я использую для тестирования
CREATE TABLE [dbo].[Authors](
[Client_Id] [nvarchar](50) NOT NULL,
[Project_Id] [nvarchar](50) NOT NULL,
[Person_Id] [int] NOT NULL,
[Author_Number] [int] NOT NULL,
[Family_Name] [nvarchar](50) NULL,
[First_Name] [nvarchar](50) NULL,
)
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('TEST','TEST',12345,1,'Giust','Fede')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('TEST','TEST',12345,2,'Giust','Fede')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('TEST','TEST',12346,1,'Giust','Fede')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('TEST','TEST',12346,2,'Giust','Fede')
INSERT INTO Authors (Client_Id, Project_Id, Person_Id, Author_Number, Family_Name, First_Name)
VALUES ('TEST','TEST',12346,3,'Giust','Fede')
До сих пор я получаю результаты как этот
CLIENT_ID PROJECT_ID PERSON_ID AUTHOR_NUMBER FAMILY_NAME FIRST_NAME
TEST TEST 12345 1 Giust Fede
TEST TEST 12345 2 Ma Ke
TEST TEST 12346 1 Jones Peter
TEST TEST 12346 2 Davies Bob
TEST TEST 12346 3 Richards Craig
Мне нужны результаты, чтобы выйти, как это, и быть динамичным потому что когда-нибудь у меня могут быть 2 автора или 10 авторов.
CLIENT_ID PROJECT_ID PERSON_ID FAMILY_NAME_1 FIRST_NAME_1 FAMILY_NAME_2 FIRST_NAME_2 FAMILY_NAME_3 FIRST_NAME_3
TEST TEST 12345 Giust Fede Ma Ke
TEST TEST 12346 Jones Peter Davies Bob Richards Craig
Я пытался использовать этот код, но постоянно получаю ошибки
Выглядит очень перспективно! Большое спасибо за такой быстрый ответ! Я буду тестировать на нашем сервере и посмотреть, полезны ли полученные результаты. Я только вставил несколько столбцов в примере, но в исходной таблице около 30 столбцов. –
Как я могу сделать это функцией или представлением? Это возможно? –
@FedericoGiust Поскольку вы используете динамический SQL, он должен находиться в хранимой процедуре. Динамический SQL не разрешен в представлениях или функциях. – Taryn