假设我有一个实际存储记录的表,它看起来像
Create Table dbo.Info
(
SN int primary key identity(1,1),
FirstName nvarchar(50) not null,
LastName nvarchar(50) not null,
Gender char(1) default 'M',
Age int check(Age>0)
)
Run Code Online (Sandbox Code Playgroud)
现在为了报告目的,我只需要这个表列名并保存在另一个表中
Create Table Report.InfoColumnOrder
(
SN int primary key identity(1,1),
UserId int,
ColumnName nvarchar(100)
)
Run Code Online (Sandbox Code Playgroud)
因此记录看起来像
1, 1, FirstName
2, 1, LastName
3, 1, Gender
4, 2, LastName
5, 2, FirstName
6, 2, Age
7, 2, Gender
Run Code Online (Sandbox Code Playgroud)
现在,当 id 为 1 的用户登录并希望从表 Info select 命令中获取报告时,应如下所示
Select FirstName, LastName, Gender from dbo.Info
Run Code Online (Sandbox Code Playgroud)
而对于 id 为 …
使用Select top 1语句我必须从没有任何唯一键的 8 列表中检索数据。现在我想将此表转换为两列:原始列名到第一列,其各自的值到第二列。
像这样的原始表:
Column1 | Column2 | Column3 | Column4
55 | 108 | 555 | 85
Run Code Online (Sandbox Code Playgroud)
和预期的结果:
ColumnName | Value
Column1 | 55
Column2 | 108
Column3 | 555
Column4 | 85
Run Code Online (Sandbox Code Playgroud)