0

select次のように2つの列を返すクエリがあります。これを一時テーブルに入れるか、問題の解決に役立つ場合はCTEにすることができます。問題は後でリストされます。

id     (cnt)
28002   11
28010   14
28029   13
28037   7
28045   6
28053   3
28061   6
28070   5
28100   5
28118   10
29009   1

しかし、次の定義を持つ別のテーブルから選択したいと思います

id
sub_id
numberOfObjects

したがって、サンプルデータは

id      sub_id    numberofObjects
28002   203125        10
28002   203126        56
28002   203127        75
28002   203128        76
28002   203129        5
28002   203130        50
28061   203131        26
28061   203132        7
28061   203133        14
28061   203134        32
29009   105678        33

ご覧のとおり、1idつには多くのがありsub_idます。

私の目標:

最初のselectステートメントのIDごとに、2番目のselectステートメントのIDと一致させ、numberOfObjectsが15未満のすべてのsub_idをプルします。

だから私の結果は

id      sub_id    numberofObjects
28002   203125        10

28002   203129        5

28061   203132        7
28061   203133        14
4

1 に答える 1

0

これはどう:

SELECT f.id
    , ot.sub_id
    , ot.numberofobjects
FROM 
      ( ...first query...) f
JOIN otherTable ot
  ON ot.id = f.id
WHERE ot.numberofobjects < 15

15未満のサブIDがない場合でもメインIDを表示したい場合...

SELECT f.id
    , ot.sub_id
    , ot.numberofobjects
FROM 
      ( ...first query...) f
LEFT JOIN otherTable ot
  ON ot.id = f.id
  AND ot.numberofobjects < 15

はい、インラインビューの代わりにCTEを使用できます。

于 2012-05-10T16:27:49.503 に答える