我有两个表,一个是用于存储数据的存储容器,另一个是在存储容器中存储用户定义的列标题。
CREATE TABLE [dbo].[HoldingTank]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[A] [nvarchar](max) NULL,
[B] [nvarchar](max) NULL,
[C] [nvarchar](max) NULL,
[D] [nvarchar](max) NULL
CONSTRAINT [PK_HoldingTank]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[HoldingTank] ON
INSERT [dbo].[HoldingTank] ([Id], [A], [B], [C], [D])
VALUES (1, N'VALUE1', N'VALUE2', N'VALUE3', N'VALUE4')
SET IDENTITY_INSERT [dbo].[HoldingTank] OFF
CREATE TABLE [dbo].[ColumnHeaders]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[ColumnLetter] [nvarchar](2) NOT NULL,
[ColumnHeading] [nvarchar](50) NOT NULL,
[IsUsed] [bit] NOT NULL,
CONSTRAINT [PK_ColumnHeaders]
PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[ColumnHeaders] ON
INSERT [dbo].[ColumnHeaders] ([Id], [ColumnLetter], [ColumnHeading], [IsUsed])
VALUES (1, N'A', N'Custom1', 1),
(2, N'B', N'Custom2', 1),
(3, N'C', N'Custom3', 1),
(4, N'D', N'Custom4', 1)
GO
SET IDENTITY_INSERT [dbo].[ColumnHeaders] OFF
目标是构建一个查询,该查询从ColumnHeading
表中的ColumnHeaders
表中返回HoldingTank
的值,以代替Id A B C D
------ ------ ------ ------ ------
1 VALUE1 VALUE2 VALUE3 VALUE4
中普通列标题的位置,因此而不是
Id Custom1 Custom2 Custom3 Custom4
------ --------------- --------------- --------------- ---------------
1 VALUE1 VALUE2 VALUE3 VALUE4
它将返回:
{{1}}
请确保这是PIVOT或PIVOT和UNPIVOT的组合。
不幸的是,我尝试过的每个变体和示例似乎总是假设标题表中的静态值(提前知道)。除非我缺少令人难以置信的基本知识。
任何帮助将不胜感激!