0

私はwith clause2つの結果セットを返すだけでなく、SQL変数も設定して戦っています。または、どういうわけか、から 2 つの結果を取得したいだけですwith clause。私のSQLクエリは次のとおりです。

declare @total as int

;with T as
(
    // some sql query
)
select * from T

上記のクエリは一連の結果を返しますが、@total(T の行数) も設定したいです。
これは可能ですか?ありがとうございました

これは、2人がこれを行う方法でもあります:

;with T as
    (
        select count(1), * from table1
    )
    select * from T

countしかし、これはasを返すため、適切な方法ではありませんcolumn

4

2 に答える 2

1

以下のクエリを試してください:

select 
    count(*) over() [Count], 
    * 
From T
于 2013-10-25T04:59:48.400 に答える
1

あなたの質問からこれをどのように呼んでいるのかは明らかではありません。それは、ストアド プロシージャ、ADO.NET、またはその他のすべてを介したものですか?

CTE内で変数を設定する方法がわかりません。私はそれを行う方法を知りません。

ストアド プロシージャを使用している場合は、CTE を使用してテーブル変数に結果を入力し、テーブル変数の行数を out パラメータとして設定することもできます。

または、CTE から結果を選択した後に @@ROWCOUNT を使用することもできます。例として、 この SO 投稿を参照してください。

上記の例で @@ROWCOUNT をテストすると、結果と返された結果の別のカウントが得られます。下記参照;

DECLARE @Total AS INT

;WITH T AS 
(
SELECT 2 AS a
UNION
SELECT 4
UNION
SELECT 6
UNION
SELECT 8
) SELECT * FROM T

SET @Total = (SELECT @@ROWCOUNT)

SELECT @Total
于 2013-10-25T06:14:04.360 に答える