我有下表(TableOne):
GroupId TradeId Status
16848 78 LIVE
16848 79 LIVE
16848 80 LIVE
16848 81 DELETED
16841 82 DELETED
16841 83 LIVE
在给定已删除的交易ID时,我需要获得整个组的价值吗? 有一个简单的方法吗?我试着做一些查询,但最后我不知道从哪里开始。
感谢回复人员,也许我简化了我的问题。这里有更多细节
交易ID来自另一个映射表(TableCorrect):
OriginalTradeId NewTradeId
100 81
101 90
102 91
我获得了原始的TradeId,需要使用“TableOne”加入“TableCorrect”
Select *
from TableOne
inner join TableCorrect on TableOne.TradeId=TableCorrect.NewTradeID
where TableCorrect.OriginalTradeId={@PassedInValue}
但上面只给了我删除的条目,但我希望表1中的其余交易具有相同的GroupId
所以给出OriginalTradeId = 100
我想要以下输出:
GroupId TradeId Status
16848 78 LIVE
16848 79 LIVE
16848 80 LIVE
16848 81 DELETED
谢谢和问候,
千电子伏
答案 0 :(得分:1)
我认为带有子查询的where
子句可能是最简单的解决方案:
Select t1.*
from TableOne t1
where t1.GroupId = (select top 1 GroupId
from TableOne tt1 join
TableCorrect tc
on tt1.TradeId = tc.NewTraceId
where tc.OriginalTradeId = @PassedInValue
);
这不是唯一的方法。另一个有趣的方法是使用窗口函数:
select t1.*
from (select t1.*,
max(case when tc.OriginalTradeId = @PassedInValue then 1 else 0 end) over
(partition by t1.GroupId) as HasOriginalTrade
from TableOne t1 join
TableCorrect tc
on t1..TradeId = tc.NewTradeId
) t1
where HasOriginalTrade > 0;
答案 1 :(得分:0)
DECLARE @myTradeId INT;
SET @myTradeId = 1;
SELECT *
FROM TableOne
WHERE GroupId = (SELECT GroupId
FROM TableOne
WHERE TradeId = @myTradeId)