sql server中多个连接语句中的用例

时间:2015-11-10 17:06:19

标签: sql-server

我使用SQL查询从多个表中提取数据。我使用不同的连接语句加入了8个表。我想加入另一个表,但它返回两行,但我只想要一行。我该怎么办?

Table-10
ID  ISmailing    IsPhysical
1       0            1
2       1            0

我想拉出一个具有ismailing value =' 1'的行。首先用isphysical =' 1'来拉行。所以我想只拉一行。

任何帮助将不胜感激。 先感谢您。

1 个答案:

答案 0 :(得分:0)

尝试使用ROW_NUMBER()函数按所需条件对多行进行排序,然后JOIN到该数据集并仅返回第一个值。

SELECT *
FROM 
    MyTable
     LEFT OUTER JOIN 
      (
        SELECT 
            ID,
            IsMailing,
            IsPhysical,
            ROW_NUMBER() OVER (PARTITION BY ID ORDER BY CASE WHEN IsMailing = 1 THEN 1 WHEN IsPhysical =1 THEN 2 END) AS RN
        FROM MyOtherTable 
      ) x ON 
        MyTable.ID = x.ID AND 
        x.RN = 1