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

问题描述

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

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

我有这个选择语句

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是不同的,所以我想使用{{{ 1}}

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

ID = 10

解决方法

类似这样的东西

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;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...