0

結果のセットによってそのグループを実行する一連のレポートがあります。実行すると、次のようになります。

Column_1
1
2
3

コード:

Select Column_1, Other_Info  
From Some_Table  
Group By Column_1

しかし、結果セットを次のようにしたい:

Column_1
1  

2

3

これはまったく可能ですか?

4

2 に答える 2

1

答えはイエスです。汚いハックで可能です。しかし、これは 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 回目はデータを使用しないのではなく、一時テーブルの使用を検討することをお勧めします。

于 2013-03-01T13:11:16.780 に答える
0

これを試して

Select Column_1 ,Other_Info, CHAR(13) + CHAR(10) From Some_Table Group By Column_1

于 2013-03-01T11:11:31.913 に答える