如何将表列标题添加到sql select语句中

Cod*_*r 2 5 sql t-sql sql-server header

我有一个像这样的SQL select语句:

select FirstName, LastName, Age from People
Run Code Online (Sandbox Code Playgroud)

这会给我一个像桌子的东西:

Peter  Smith    34
John   Walker   46
Pat    Benetar  57
Run Code Online (Sandbox Code Playgroud)

我想要的是将列标题插入第一行,如:

First Name  Last Name  Age
=========== ========== ====
Peter       Smith      34
John        Walker     46
Pat         Benetar    57
Run Code Online (Sandbox Code Playgroud)

有人可以建议如何实现这一目标吗?

您是否可以使用标题创建一个临时表并将数据附加到此表中?

Ric*_*iwi 7

除非您的所有名字按排序顺序排在"第一"之后,否则上述任何一个答案都不会起作用.

Select FirstName, LastName
from (
    select Sorter = 1, FirstName, LastName from People
    union all
    select 0, 'FirstName', 'LastName') X
order by Sorter, FirstName   -- or whatever ordering you need
Run Code Online (Sandbox Code Playgroud)

如果你想对所有非varchar列执行此操作,则CONS(至少):

  1. 您的所有数据都将变为VARCHAR.例如,如果您使用Visual Studio,您将永远不会识别或使用日期值.或者int值.或者其他任何事情.
  2. 您需要显式提供日期时间值的格式,如DOB.Varchar中的DOB值格式为dd-mm-yyyy(如果这是您选择将其转换为)将无法正确排序.

实现这一点的SQL,无论如何不推荐,是

Select FirstName, LastName, Age, DOB
from (
    select Sorter = 1,
        Convert(Varchar(max), FirstName) as FirstName,
        Convert(Varchar(max), LastName)  as LastName,
        Convert(Varchar(max), Age)       as Age,
        Convert(Varchar(max), DOB, 126)  as DOB
    from People
    union all
    select 0, 'FirstName', 'LastName', 'Age', 'DOB') X
order by Sorter, FirstName   -- or whatever ordering you need
Run Code Online (Sandbox Code Playgroud)