-1

1 つのストアド プロシージャ/UDF で次のことを行う方法はありますか。

  1. テーブルから選択
  2. pt 1の選択の結果から選択
  3. pt 1の選択の結果を再度選択します
  4. pt 1、2、および 3 からの 3 つの結果すべてを呼び出し元に返す

PS: 3 つの結果はレコードセットであり、単一の値ではありません。


わかりました、私は質問をより明確にしようとします。サブクエリで私が望むものを達成できるとは思わない..

擬似コード:

SELECT BrandID, TypeID, CECategoryID, BrandName, ModelID, ModelName 
FROM Boats 
WHERE BrandID = @BrandID
"INTO @Recordset1"


SELECT Count(ModelID) AS ModelsPerType
FROM @Recordset1
GROUP BY TypeID
"INTO @Recordset2"


SELECT Count(ModelID) AS ModelsPerCECategory
FROM @Recordset1
GROUP BY CECategoryID
"INTO @Recordset3"


"RETURN Recordset1, Recordset2, Recordset3"

私がやったことをハイフンで書くことができないことはわかっていますが、それは私が探しているものを説明するためです. 私のコード (Web アプリケーション) で、上記のコードを保持するストアド プロシージャを呼び出して、3 つのレコードセットを受け取りたいと思います。

4

3 に答える 3

0

あなたはこのようなものを使うことができます

        Select * From (Select * From (Select * from Table1)T1)T2 --pt3
        Select * From (Select * from Table1)T1 --pt2
        Select * from Table1 --pt1

更新された要件を確認した後、クエリを編集しました。このクエリには3つのレコードセットが表示され、要件に応じて使用できます。

于 2013-01-15T14:26:16.573 に答える
0
SELECT *
FROM ( SELECT * 
       FROM ( SELECT *
              FROM BIG_DATA_TABLE )
       WHERE blah blah )
WHERE blah blah
ORDER BY etc

これは、 Sql Serverを含むほとんどのデータベースで機能するはずです。

ポイント 4 がわかりません。3 つの結果すべてをどのように返しますか? 結果の最初のテーブルに後続の結果の行を追加することによって?

3 つの個別のクエリ (メイン、最初のサブセレクトを含むメイン、および 2 つのサブクエリを含むメイン) を記述し、各クエリの結果を次のクエリに結合することができますがunion 3 つのクエリには同じ数と型のクエリが含まれている必要があります。列ですが、それは厄介です。

何かのようなもの

SELECT * FROM BIG_TABLE
UNION
SELECT * FROM ( SELECT * FROM BIG_TABLE ) WHERE subquery_stuff 
UNION
SELECT * FROM ( SELECT * FROM ( SELECT * FROM BIG_TABLE ) WHERE subquery_stuff ) WHERE sub_subquery_stuff )

編集:OIC

3 つのクエリをストアド プロシージャに入れるだけで、3 つの結果セットが得られるはずです。 http://msdn.microsoft.com/en-US/data/jj691402

于 2013-01-15T14:04:04.383 に答える
0

最初のクエリで取得した詳細データと一緒にカウントを返したい場合は、ウィンドウ集計関数を使用できます。

SELECT
  BrandID,
  TypeID,
  CECategoryID,
  BrandName,
  ModelID,
  ModelName,
  COUNT(ModelID) OVER (PARTITION BY TypeID      ) AS ModelsPerType,
  COUNT(ModelID) OVER (PARTITION BY CECategoryID) AS ModelsPerCECategory
FROM Boats 
WHERE BrandID = @BrandID
;
于 2013-01-16T17:19:35.793 に答える