0

我有一个select查询以下列方式返回两列。如果它有助于解决问题,我可以将它放在临时表中或将其设为 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

如您所见,一个id有很多sub_id.

我的目标:

对于第一个 select 语句中的每个 id,我希望它与第二个 select 语句中的 id 匹配,并提取 numberOfObjects 小于 15 的所有 sub_ids

所以我的结果应该是

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

如果您希望主 id 出现,即使没有 subid 少于 15...

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 回答