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

标签 sql sql-server tsql header

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

select FirstName, LastName, Age from People

这将返回类似表格的内容:

Peter  Smith    34
John   Walker   46
Pat    Benetar  57

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

First Name  Last Name  Age
=========== ========== ====
Peter       Smith      34
John        Walker     46
Pat         Benetar    57

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

您可以创建一个包含标题的临时表并将数据附加到其中吗?

最佳答案

上面的答案都不起作用,除非您的所有名字都按排序顺序出现在“第一个”之后。

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

如果您也想对所有非 varchar 列执行此操作,缺点是(至少):

  1. 您的所有数据都将变为 VARCHAR。例如,如果您使用 Visual Studio,您将无法再识别或使用日期值。或 int 值。或任何其他与此相关的内容。
  2. 您需要明确提供日期时间值的格式,例如 DOB。 Varchar 中采用 dd-mm-yyyy 格式(如果您选择将其转换为该格式)的 DOB 值将无法正确排序。

实现此目的的 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

关于sql - 如何将表列标题添加到sql select语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964162/

相关文章:

sql - 如何确定 COALESCE 运算符成功选择了哪一列/值?

sql-server - 嵌套的插入exec解决

Mysql表键

java - 连接到 SQL Server 数据库

sql-server - SQL Server 中的过滤索引缺少谓词无法按预期工作

sql - 将临时表重命名为物理表

mysql - 当有 3 个日期列时按日期排序

PHP setcookie 添加百分号

mysql - SQL查询仅在满足特定条件时选择行

sql - 是否可以在 Count() 中指定条件?