AccountAction
非正規化された SQL Server テーブルがあります。Account
これはテーブルとテーブルのフラット化されたバージョンであり、Action
何百万行にも及ぶクエリをレポートするために、はるかに高速になることを願っています。Account
多くの を使用できるためActions
、表は次のようになります。
Account Action
account1 action1
account1 action2
account1 action10
account2 action5
ただし、単純なストアド プロシージャで制限されたサブセットの情報を取得するのに問題があります。
select Account, Action
from AccountAction
where ???
私が探しているのは、すべてのアクションを含む最初の X アカウントを取得することです。したがって、これは動的な行数になります。したがって、上記の例のテーブルを使用して 1 を渡すと、3 つの行が得られます (つまり、最初のアカウントのすべての行が得られます)。
(アカウント名が各行にあることは気にしません - 別の場所にピボットされます)
行を制限するために ROWNUM などを使用する必要がありますか? これは、これまでに見つけたよりも単純な問題に違いないと確信しています。
編集
TOP を使用した回答は機能しません。この例では、「(最初の) アカウントを 1 つください」と言った場合に 3 行が返されるようにします。しかし、どうすれば 3 つあるとわかるでしょうか。そのダイナミック。また、account1 の action99 が結果の 5,500 万の位置にあったとしたら、それらは連続していない可能性があります。