我使用SQL查询从多个表中提取数据。我使用不同的连接语句加入了8个表。我想加入另一个表,但它返回两行,但我只想要一行。我该怎么办?
Table-10
ID ISmailing IsPhysical
1 0 1
2 1 0
我想拉出一个具有ismailing value =' 1'的行。首先用isphysical =' 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