将两张桌子连在一起

时间:2012-05-10 15:09:05

标签: tsql

我有一个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_id

所以我的结果应该是

id      sub_id    numberofObjects
28002   203125        10

28002   203129        5

28061   203132        7
28061   203133        14

1 个答案:

答案 0 :(得分: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而不是内联视图。