私は、SQL Serverを使用していますトップ#は別のテーブルから来ている複数のトップXレコードのテーブルを生成し、私は「トップ」のクエリ、複数の結果を含む出力を生成する必要が2012年SQLは
各問合せで戻される「トップ」行の数は、別の表の値に基づいて異なります。
私の最初のテーブルは、テーブル1と呼ばれ、NUMBERは、一意の各マーケット/メジャーごとに別のテーブルから返す必要があるトップローの数を示しています。
MARKET MEASURE NUMBER
------ ------- ------
MarketA MeasureA 411
MarketA MeasureB 396
MarketB MeasureA 548
MarketB MeasureC 424
MarketC MeasureC 411
第二のテーブル、表2は、市場とMEASUREの組み合わせは、私の主キーで特定の市場/ MEASURE内の個々の人、のために詳細を示しています。与えられたマーケット/メジャーには多くのエントリーがあります。
MARKET MEASURE LASTNAME COMPLIANT
------ ------- -------- ---------
MarketA MeasureA Coppola Y
MarketA MeasureA Winterbottom N
MarketA MeasureB Scorsese Y
MarketC MeasureC Tarr Y
表1の各値について、昇順でLASTNAMEのソートに基づいてTable2の多くの最上行を戻す必要があります。たとえば、Table1にはMarketA/MeasureAの411という数字があるので、私の出力には、Table2のTOP 411 *行(LASTNAME昇順でソートされたその市場のすべての人に基づく)と、MarketA/MeasureB、MarketB/MeasureAのTOP 548行など、すべてのクエリを個別に「結合」したかのように(?)
Table1の各マーケット/測定値(1000以上)のUNION個別クエリを使用せずに、これを動的に行うにはどうすればよいですか?
ので、答えは
select TOP (select NUMBER from TABLE2) *
from TABLE1 t1
inner join TABLE2 t2 on t2.MARKET = T1.MARKET
and t2.MEASURE = T2.MEASURE
.....のように、TOPの式で#を生成するために選択式を使用することであるように私は感じて...しかし、明らかに、私はいくつかの手順が不足していますTOP式はTABLE2から複数の値を戻しますが、それぞれのMARKET/MEASUREの組み合わせに対して「実行」する方法を理解できません。
大変助けになりました。
私はこれを動作させることはできません。明らかに、私はTOP式で(Table1.Number)を使用することはできません。代わりにそれを同等のサブクエリに変更すると(TABLE1からNUMBERを選択)、同じサブクエリが複数の値を返す前に同じ問題が発生します。 –
あなたのクエリは正しくないはずです。これが動作することを示すためにsqlfiddleを追加しました。 – mheptinstall
上記はあなたの質問に答えましたか? – mheptinstall