Sql server 2008 使用if语句限定一个表条目,然后在同一个表中提取另一个条目

Sql server 2008 使用if语句限定一个表条目,然后在同一个表中提取另一个条目,sql-server-2008,Sql Server 2008,我试图在表列中提取一个名为Reason的条目。如果reasoncode字段中有转账条目,我想为同一表格中的同一个人提取几个其他条目,其中positiontoeffectdate如果我理解您的意图正确,您想从满足positiontoeffectdate

我试图在表列中提取一个名为Reason的条目。如果reasoncode字段中有转账条目,我想为同一表格中的同一个人提取几个其他条目,其中positiontoeffectdate如果我理解您的意图正确,您想从满足positiontoeffectdate<'30000101'条件的表格中提取一个人的记录,当且仅当同一个人的另一条记录具有reasoncode='transfer'人如果是这种情况,一种方法是将exists谓词与相关子查询一起使用:

select * from mytablename m
where personlastname ='test' and positiontoeffectdate < '30000101' 
and reasoncode <>'transfer'
and exists (
    select 1 
    from mytablename 
    where personlastname = m.personlastname 
      and reasoncode = 'transfer'
    )

你能在问题中添加表格的描述吗?一些示例数据和预期的输出也会有所帮助。personidno lastname positionreason positiontoeffectdatepersonidno lastname positionreason positiontoeffectdate 459 Joseph Transfer 3000-01-01 459 Joseph实现2015-040401我需要拉动该职位进行实施,但前提是职位原因=调动和职位生效日期='30000101'是!!成功了!我会坚持我的技能。谢谢大家!@VB3641,如果这篇文章对你有帮助,那么至少投票给美联社我会很乐意投票给你…我已经看了好几个地方,不知道在哪里投票给你…我是新来的网站,所以请原谅我…我会看一些more@VB3641As一个你还不能投票的新用户投票需要一点声誉,但我很欣赏这个想法。如果答案解决了您的问题,您可以单击答案左侧的复选标记将其标记为已接受。
select * from mytablename m
where personlastname ='test' and positiontoeffectdate < '30000101' 
and reasoncode <>'transfer'
and exists (
    select 1 
    from mytablename 
    where personlastname = m.personlastname 
      and reasoncode = 'transfer'
    )