选择上一条记录

时间:2015-01-30 16:45:52

标签: sql sql-server

我希望仅选择包含情况的大多数ID的记录=' A'。

如果记录中包含更多ID且情况=' C'不能退货;

怎么做?

select * from tabela a where 
a.id not in (select max(b.id) from tabela b where b.fk=a.fk and b.situacao='A')

enter image description here

1 个答案:

答案 0 :(得分:0)

也许是这样的。内部查询只获取C的所有ma4idoco,并且首先排除所有ma4idoco。如果我正确理解了这个问题,可能会有多行具有相同的ma4idoco和ma4idsit ='A',但你想要最大的ma4idode。

SELECT MAX(a.ma4idode),
  a.ma4idoco,
  a.ma4idsit
FROM tablea a
WHERE a.ma4idoco NOT IN (SELECT b.ma4idoco FROM tablea b WHERE b.ma4idsit = 'C')
  AND a.ma4idsit = 'A'
GROUP BY a.ma4idoco, a.ma4idsit