如果我在SQL Management Studio中设置输出到Text(不是网格或文件)并运行以下命令:
SET NOCOUNT ON
SELECT '1'
SELECT '2'
SELECT '1'
我明白了:
1
2
1
如何在每行之后删除额外的新行? 我在Tools->选项中设置为默认值: 1.输出格式为TAB分隔 2.结果集中排除的列标题 3.创建了一个新查询
更新 为简单起见,显示了先前的查询。请把这个问题作为一个问题:
SELECT 1+2
SELECT 'A FOX'
SELECT 1,2,3
想要在行之间看不到额外的行,例如:
3
A FOX
1 2 3
答案 0 :(得分:5)
您将获得三个单独的结果集 - 每个选择一个。
为了获得单个结果集(带有重复项),您需要UNION ALL
选择:
SET NOCOUNT ON
SELECT '1' UNION ALL
SELECT '2' UNION ALL
SELECT '1'
有关详细信息,请参阅MSDN上的UNION (Transact-SQL)。
更新
你想做什么是不可能的。每个选择中字段的类型和数量都不同 - 您不能UNION
它们。
您不能拥有每行具有不同列数或每行具有不同数据类型的单个结果集。
答案 1 :(得分: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并从模板复制格式。 完成。
如果有人能提出更优雅的解决方案,我将不胜感激。