如何将两个表的结果结合起来以获得期望的结果

时间:2019-09-29 13:13:10

标签: sql sql-server

我有两个表 LeftTable RightTable ,分别包含数据。

左表

loginid                                            position   level
-------------------------------------------------- ---------- -----------
9972                                               L          1
9973                                               L          1
9974                                               L          2
9975                                               L          2
9976                                               L          2

RightTable

loginid                                            position   level
-------------------------------------------------- ---------- -----------
9977                                               R          1
9978                                               R          1
9979                                               R          2

我尝试了以下查询

SELECT 
  CASE 
    WHEN LT.loginid > RT.loginid THEN LT.loginid 
    ELSE RT.loginid 
  END LoginID,
  LT.level
FROM #LeftTable LT 
INNER JOIN #RightTable RT ON LT.level = RT.level 

得到结果

LoginID                                            level
-------------------------------------------------- -----------
9977                                               1
9977                                               1
9978                                               1
9978                                               1
9979                                               2
9979                                               2
9979                                               2

但是我想要这样的结果。

loginid                       level
---------------------------- -----------
9977                              1
9978                              1
9979                              2

注意-这里的Loginid是MAX,而不是来自RightTable

基于右表中的每个记录的结果也基于 level 出现在左表中,即如果 lefttable 中存在三个记录,但在 righttable中存在三个记录,只有第2级的记录,然后它应该仅返回一条记录,反之亦然。 LoginId将更大。

0 个答案:

没有答案