我有一个像这样的 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 列执行此操作,则缺点(至少)是:
实现此目的的 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
执行此操作的最轻量级方法可能是执行 UNION:
SELECT 'FirstName' AS FirstName, 'LastName' AS LastName
UNION ALL
SELECT FirstName, LastName
FROM People
无需创建临时表。
UNION All
是解决方案,但应该指出的是:
示例:
Select Convert(varchar(25), b.integerfiled) AS [Converted Field]...
... Order by [Converted Field]
如果您只想在查询输出中包含标题,请在编写查询之前在终端中输入以下内容:
.headers on
这将以以下格式返回您的数据:
First Name|Last Name|Age|
Peter|Smith|34|
John|Walker|46
如果您希望对齐列以提高可读性,请在终端中输入:
.mode column
这将以以下格式返回您的数据:
First Name Last Name Age
----------- ----------- ------
Peter Smith 34
John Walker 46
如果您想返回格式化为包含标题的表格的查询结果,请在终端中输入:
.mode table
这将以以下格式返回您的数据:
+------------+-----------+-------+
| First Name | Last Name | Age |
+------------+-----------+-------+
| Peter | Smith | 34 |
| John | Walker | 46 |
+------------+-----------+-------+