2

如果我在 SQL Management Studio 中设置为生成文本输出(不是网格或文件)并运行以下命令:

SET NOCOUNT ON
SELECT '1'
SELECT '2'
SELECT '1'

我明白了:

1

2

1

如何在每行之后删除额外的新行?我在以下工具->选项中设置为默认值: 1. 输出格式为制表符分隔 2. 结果集中排除的列标题 3. 创建了一个新查询

更新: 为简单起见,显示了先前的查询。请把这个当作一个问题:

SELECT 1+2
SELECT 'A FOX'
SELECT 1,2,3

想要看到行之间没有多余的行,例如:

3
A FOX
1  2  3
4

2 回答 2

5

您将获得三个单独的结果集 - 每个选择一个。

为了获得单个结果集(带有重复项),您需要UNION ALL选择:

SET NOCOUNT ON
SELECT '1' UNION ALL
SELECT '2' UNION ALL
SELECT '1'

有关详细信息,请参阅MSDN 上的UNION (Transact-SQL)


更新:

你想做的事情是不可能的。每个选择中字段的类型和数量都不同 - 你不能UNION

您不能拥有每行具有不同列数或每行具有不同数据类型的单个结果集。

于 2012-05-01T17:48:43.920 回答
0

好吧,我决定发布答案,而不是发表评论,因为它可能对某人有所帮助。我需要将存储过程的输出粘贴到 Excel 中并从模板应用“复制格式”。我以这种方式解决了这个问题:

我有最初的陈述

SELECT 'Report Header'
SELECT ''
SELECT 'Line of report',1
SELECT 'Line of report',23
SELECT * FROM SUBREPORT
SELECT 'SUBTOTAL:',(select count(*) from another_table)
SELECT ''
SELECT 'REPORT GENERATED AT ', GetDate()

我更新到这个:

SELECT 'Report Header'
SELECT '[NEWLINE]'
SELECT 'Line of report',1
SELECT 'Line of report',23
SELECT * FROM SUBREPORT
SELECT 'SUBTOTAL:',(select count(*) from another_table)
SELECT '[NEWLINE]'
SELECT 'REPORT GENERATED AT ', GetDate()

由于多余的空行会破坏格式,因此我必须删除它们。我将文本输出并粘贴到 Word 中。将“^p^p”替换为“^p”,然后将“[NEWLINE]”替换为“”(无)。复制粘贴到 Excel 并从模板复制格式。完毕。

如果有人可以提出更优雅的解决方案,我将不胜感激。

于 2012-05-02T19:05:21.307 回答