sql >> データベース >  >> RDS >> Sqlserver

WITH TempResults AS を使用すると、2 つの結果セットが返されます

    これはできません(私の知る限り)。 3 つの回避策があります。1 つは 2 つの異なる結果セットとして保持できるようにする方法で、もう 2 つは結果を同じ結果セットに (追加の行または追加の列として) マージする必要があります。

    <オール>
  1. CTE の代わりに、結果を一時テーブルにプッシュし、そこからクエリを実行します。
  2. カウントを別の行として実際の結果セットにマージします:UNION ALL を使用します 残りのデータから抽出できるように、カウント行に ID、名前、RowID の適切な値を指定します
  3. SELECT COUNT(*) を追加します CROSS JOIN を使用して追加の列としてプライマリ結果セットに追加
  4. この後者については、プライマリ クエリを次のように変更することで実行できます。

    SELECT Id, Name, RowId, countTable.totalRows
        FROM ResultsTemp
            CROSS JOIN (SELECT COUNT(*) AS totalRows FROM ResultsTemp) AS countTable
        GROUP BY Id, Name, RowId 
        HAVING RowId BETWEEN @StartRow and (@StartRow + @MaxRows);
    

    パフォーマンスを保証することはできません。プロフィールを作成する必要があります。



    1. Ubuntuにmysqlgemをインストールする際の問題

    2. エポック時間を日付に変換する方法は?

    3. SQLステートメントで変数名を使用するにはどうすればよいですか?

    4. bashからmysqlクエリをフィードする方法