2

SQL Management Studioで、(グリッドやファイルではなく)テキストへの出力を生成し、次のように実行するように設定した場合:

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

私はこれを手に入れます:

1

2

1

すべての行の後に余分な新しい行を削除するにはどうすればよいですか?次の[ツール]->[オプション]でデフォルトとして設定しました。1。TAB区切りの出力形式2.結果セットの除外された列ヘッダー3.新しいクエリの作成

更新:わかり やすくするために、前のクエリが表示されています。これを質問としてください:

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

行の間に余分な行がないようにしたい、例:

3
A FOX
1  2  3
4

2 に答える 2

5

選択ごとに 1 つずつ、合計 3 つの個別の結果セットが得られます。

単一の結果セット (重複あり)を取得するには、次のよう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 に答える