如何从查询中的另一行获取值

How to get the value from another row in my query

如何从 SQL 中的另一行获取值?

ID  DeletedPersonID  ProductKey    PartyID       RespID  
9     461               17            33           95      
10    95                17            34           95

我有这个select声明

select
      drp.ID,
      drp.DeletedPersonID,
      drp.ProductID,
      case when drp.DeletedPersonID != drp.RespID then (Get Party Key by RespID) else drp.PartyID end as 'PartyID',
      case when drp.DeletedPersonID != drp.RespID then (Get Party Key by RespID) else drp.PartyName end as 'PartyName',
      case when drp.DeletedPersonID = drp.RespID then null else drp.PartyID end as 'SubPartyID',
from dbo.RespHistory drp

在上面的示例中,由于 ID = 10 具有相同的 DeletedPersonID 和 RespID 值,因此我喜欢使用相同的 PartyID 但在 ID = 9 或第一行中,由于 DeletedPersonID 和 RespID 不同,我想使用 PartyID 的ID = 10

我正在寻找类似于下图的视图

 ID DeletedPersonID  ProductKey    PartyID       PartyName   SubPartyID
   9      461               17            34           ABC      33
  10      95                17            34           XYZ      null

像这样

with equals_cte (RespID) as (
    select RespID
    from dbo.RespHistory
    where DeletedPersonID = RespID
)
select
    drp.ID, drp.DeletedPersonID, drp.ProductKey, coalesce(ec.RespID, drp.RespID) PartyID
    , drp.PartyName, drp.RespID
    , iif(drp.DeletedPersonID = drp.RespID, null, drp.RespID) SubPartyID
from dbo.RespHistory drp
left join equals_cte ec on drp.RespID = ec.RespID;