1
я имею ниже таблице & данные:MSSQL - Pivot мульти поля
USE tempdb; SET NOCOUNT ON;
IF OBJECT_ID('tempdb.dbo.#abcd', 'U') IS NOT NULL DROP TABLE dbo.#abcd;
CREATE TABLE #abcd
(
[Company] [NVARCHAR](30) NOT NULL,
[FatherNum] [NVARCHAR](30) NOT NULL,
[FormatCode] [NVARCHAR](20) NULL,
[AcctName] [NVARCHAR](8) NULL,
);
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('FR','100002','123456','ACCOUNT1');
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('FR','100002','123321','ACCOUNT2');
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('UK','100002','123456','ACCOUNT1');
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('UK','100002','123321','ACCOUNT3');
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('UK','100003','125467','TESTA');
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('USA','100000','45725','TESTB');
INSERT INTO [#abcd] ([Company],[FatherNum],[FormatCode],[AcctName])VALUES('USA','100002','123456','ACCOUNT1');
желаемый результат запроса этой таблице:
USE tempdb; SET NOCOUNT ON;
IF OBJECT_ID('tempdb.dbo.#abcd1', 'U') IS NOT NULL DROP TABLE dbo.#abcd1;
CREATE TABLE #abcd1
(
[FatherNum] [NVARCHAR](30) NOT NULL,
[FR] [NVARCHAR](20) NULL,
[FRName] [NVARCHAR](20) NULL,
[UK] [NVARCHAR](20) NULL,
[UKName] [NVARCHAR](20) NULL,
[USA] [NVARCHAR](20) NULL,
[USAName] [NVARCHAR](20) NULL,
);
INSERT INTO [#abcd1] ([FatherNum],[FR],[FRName], [UK], [UKName], [USA], [USAName]) VALUES('100002','123456','ACCOUNT1','123456','ACCOUNT1','123456','ACCOUNT1');
INSERT INTO [#abcd1] ([FatherNum],[FR],[FRName], [UK], [UKName], [USA], [USAName]) VALUES('100002','123321','ACCOUNT2','123321','ACCOUNT3',NULL,NULL);
INSERT INTO [#abcd1] ([FatherNum],[FR],[FRName], [UK], [UKName], [USA], [USAName]) VALUES('100003',NULL,NULL,'125467','TESTA',NULL,NULL);
INSERT INTO [#abcd1] ([FatherNum],[FR],[FRName], [UK], [UKName], [USA], [USAName]) VALUES('100003',NULL,NULL,NULL,NULL,'45725','TESTB');
SELECT * FROM dbo.#abcd1
Я только удалось получить это далеко:
SELECT * FROM (
SELECT Company, FatherNum, FormatCode,AcctName FROM #abcd
) temptable
PIVOT
(MAX(FormatCode) FOR Company IN ([FR], [UK], [USA])) T1
обновил мой ответ, основанный на ожидаемый результат –