为每种类型+ sql server 2012选择记录

时间:2014-05-06 10:34:03

标签: sql-server-2012

A1

A1Id   A1Type
 1      ABC
 2      XYZ
 3      PQR

B1

 B1Id   B1Name        A1Id
  1     asia           1
  2     asian          1
  3     aftric         2
  4     angloafric     2
  5     aftricegypt    2
  6     usa            3
  7     redindian      3

现在我需要从表B1中获取A1中每种类型的一条匹配记录。

我需要得到这些结果:

B1Id        B1Name     A1Id
---------------------------
1           asia       1
2           aftric     2
3           redindian  3

我需要编写一个select查询来为每条记录获取至少一个匹配记录。

有人可以建议如何编写查询吗?

1 个答案:

答案 0 :(得分:0)

如果美国没问题,
我使用A1ID作为新的B1Id
然后在sql下面试试这个

假设表@ A1是表A1,表@ B1是表B1

with cte as
(
select 
    b.B1Id,b.B1Name
    ,a.A1ID
from @A1 a
inner join @B1 b on  a.A1ID = b.A1Id
)
select  
    C1.A1ID as B1ID
    ,c1.B1Name
    ,C1.A1ID
from cte c1
left join cte c2 on c1.A1ID = c2.A1ID and c1.B1Id = c2.B1Id + 1
where c2.B1Id is null


B1ID        B1Name               A1ID
----------- -------------------- -----------
1           asia                 1
2           aftric               2
3           usa                  3