2011-07-31 72 views
0

出力パラメータとして、次のストアドプロシージャのスターによってマークされた最も内側のSELECTステートメントのカウントを返すにはどうすればよいですか?いくつかの派生テーブルを含むストアドプロシージャから出力パラメータを返す

Create procedure MySp 
AS 
Select RowNumber,NewsId From 
(
    Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber',NewsId From 
     (
      * Select Distinct NewsId,FirstVisit,PublishDate From VwNewsPack 
     ) as t 
) as tt   
Where NewsId between 10 and 20 
+1

として、これは十分ではない場合、あなたは内側の選択のために一時テーブルを必要とし、割り当てます

Select RowNumber,NewsId,InnerCount From ( Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber', NewsId , COUNT(*) OVER() AS InnerCount From ( Select Distinct NewsId,FirstVisit,PublishDate From VwNewsPack ) as t ) as tt Where NewsId between 10 and 20 

@@ ROWCOUNT:

あなたは余分な列を返すことができます。あなたはあなたの質問のランダムな言葉ではなく、あなたが使っているRDBMSでこれをタグ付けするべきです。 –

+0

urアドバイスありがとう –

+0

いいえ、* RDBMS *という単語ではなく、使用しているRDBMSの名前* ... Oracle? DB2? SQLサーバー? Postgres?この問合せがどのRDBMSを対象としているかわからない限り、質問には答えられません。 –

答えて

2

1つではできません。つまり、両方とも変数に代入して結果セットを選択します。それはもう一方のものです。変数

+0

ありがとうございますが、最初の解決策は機能しませんでした。私はgroup by節を使用しなければならない。 –

+0

@Vahid Ghadiri:申し訳ありませんが、今OVER句を追加しました。動作する必要があります – gbn

+0

それは動作します。どうもありがとう –

関連する問題