一尘不染

如何在选择结果集的顶部添加“ ustom”行?

sql

我可以像使用t-sql一样使用select语句来选择并拉出记录列表:

select * from [dbo].[testTable];

但是,如何在结果集的顶部添加“自定义”行呢?

例如,如果结果集是:

John    john@email.com
Max     max@domain.com

我要向结果集中添加一行(不是表中的行),以便它看起来像这样:

Name    Email
John    john@email.com
Max     max@domain.com

之所以要执行此操作,是因为我要通过sqlcmd将其导出到一个csv文件中,并且要添加这些“自定义行”作为标题。


阅读 120

收藏
2021-03-17

共1个答案

一尘不染

这是执行此操作的安全方法:

select name, email
from ((select 'name' as name, 'email' as email, 1 as which
      ) union all
      (select name, email, 2 as which from [dbo].[testTable]
      )
     ) t
order by which;

在实践中,union all将起作用:

      select 'name' as name, 'email' as email
      union all
      select name, email from [dbo].[testTable]

但是,我找不到能保证第一个子查询在第二个查询之前完成的文档。SQL Server 的基础运算符 确实
具有此行为(或者至少在我上次进行调查时在SQL Server 2008 具有此行为)。

2021-03-17