我有一个像这样的 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 列执行此操作,缺点是(至少):
- 您的所有数据都将变为 VARCHAR。例如,如果您使用 Visual Studio,您将无法再识别或使用日期值。或 int 值。或任何其他与此相关的内容。
- 您需要明确提供日期时间值的格式,例如 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/