結果のセットによってそのグループを実行する一連のレポートがあります。実行すると、次のようになります。
Column_1
1
2
3
コード:
Select Column_1, Other_Info
From Some_Table
Group By Column_1
しかし、結果セットを次のようにしたい:
Column_1
1
2
3
これはまったく可能ですか?
結果のセットによってそのグループを実行する一連のレポートがあります。実行すると、次のようになります。
Column_1
1
2
3
コード:
Select Column_1, Other_Info
From Some_Table
Group By Column_1
しかし、結果セットを次のようにしたい:
Column_1
1
2
3
これはまったく可能ですか?
答えはイエスです。汚いハックで可能です。しかし、これは SQL 以外で処理する方がはるかに優れていることを強くお勧めします。SQL はデータ用で、アプリケーション レイヤーはフォーマット用です。(結果を処理する場所によっては、新しい質問をすることが有益な場合があります)。
それを行うには、結果セットを複製する必要がありますが、データは空です (つまり、すべての列が varchar であることを確認する必要があります)。
次に、空白行が交互になるように結果セットを並べ替える方法が必要です (以下の Sort1 と Sort2)。
SELECT Column1, OtherInfo
FROM ( SELECT Column_1 = CAST(Column_1 AS NVARCHAR),
OtherInfo = CAST(Other_Info AS NVARCHAR),
Sort1 = ROW_NUMBER() OVER(ORDER BY Column_1),
Sort2 = 1
FROM Some_Table
GROUP BY Column_1, OtherInfo
UNION ALL
SELECT Column_1 = N'',
OtherInfo = N'',
Sort1 = ROW_NUMBER() OVER(ORDER BY Column_1),
Sort2 = 2
FROM Some_Table
GROUP BY Column_1, OtherInfo
) d
ORDER BY Sort1, Sort2;
クエリのコストが特に高い場合は、2 回選択して 2 回目はデータを使用しないのではなく、一時テーブルの使用を検討することをお勧めします。
これを試して
Select
Column_1
,Other_Info,
CHAR(13) + CHAR(10)
From
Some_Table
Group By
Column_1