Sql 带计数条件的嵌套SELECT查询

Sql 带计数条件的嵌套SELECT查询,sql,sql-server,Sql,Sql Server,我有两张桌子。我有一个简单的内部连接查询,其中字段是从两个表中选择的,分别是Deals和Deals\u Country 两个表共享一个名为Id的字段。这是Deals中的主键,也是Deals\u Country中的外键。因此,id在交易中始终是唯一的,但在国家/地区的交易中并不总是唯一的 我想向我的简单内部联接查询添加进一步的条件。我只想返回在MA_DEALS_国家/地区有多个id的记录。请参见下面的示例 select DEALS.id, DEALS.field_b, DEALS_COUNTRY

我有两张桌子。我有一个简单的内部连接查询,其中字段是从两个表中选择的,分别是Deals和Deals\u Country

两个表共享一个名为Id的字段。这是Deals中的主键,也是Deals\u Country中的外键。因此,id在交易中始终是唯一的,但在国家/地区的交易中并不总是唯一的

我想向我的简单内部联接查询添加进一步的条件。我只想返回在MA_DEALS_国家/地区有多个id的记录。请参见下面的示例

 select DEALS.id, DEALS.field_b, DEALS_COUNTRY.field_c DEALS_COUNTRY.field_d, 
 from DEALS
 inner join DEALS_COUNTRY
 on DEALS.id = DEALS_COUNTRY.id
 where 
 (
    select id
    from DEALS_COUNTRY
    group by id
    having count(id) > 1
 ) 
 order by id


DEALS
id
AA11
AB34
AN21
BN44

DEALS_COUNTRY
id      some_code
AA11    4506
AB34    5052
AB34    6161
AB34    0124
AN21    6322
AN21    9548
BN44    0012
结果

Deal.id    Deal_Country.some_code
AB34       5052
AB34       6161
AB34       0124
AN21       6322
AN21       9548   

另一种方法是在()上使用count()

select DEALS.id, DEALS.field_b, DEALS_COUNTRY.field_c DEALS_COUNTRY.field_d, 
 from DEALS
 inner join DEALS_COUNTRY
 on DEALS.id = DEALS_COUNTRY.id
 where  exists
 (
    select x.id
    from DEALS_COUNTRY x
    where  x.id = DEALS.id
    group by x.id
    having count(x.id) > 1
 ) 
 order by deal_id
SELECT
      id
    , field_b
    , field_c
    , field_d
FROM (
            SELECT
                  DEALS.id
                , DEALS.field_b
                , DEALS_COUNTRY.field_c
                , DEALS_COUNTRY.field_d
                , COUNT(*) OVER (PARTITION BY DEALS_COUNTRY.id) AS cnt
            FROM DEALS
                  INNER JOIN DEALS_COUNTRY
                              ON DEALS.id = DEALS_COUNTRY.id
      ) AS sq
WHERE cnt > 1