如何查找组中缺少的行?

时间:2019-06-26 22:33:55

标签: sql sql-server sql-server-2016

请考虑以下数据。我正在尝试查找在特定RequestID中有一个Attempt: 0但缺少Attempt: 2的情况。

我尝试使用Attempt: 0谓词寻找WHERE,并在子查询中执行NOT EXISTS ... Attempt: 2,但是它没有返回正确的数据。

如何查找缺少Attempt: 2的RequestID?

ID      Message       RequestID
635828  Attempt: 0    1
635968  Attempt: 1    1
641085  Attempt: 2    1
641230  Attempt: 3    1
643859  Attempt: 0    2
645991  Attempt: 1    2
650255  Attempt: 3    2
652388  Attempt: 0    3
654520  Attempt: 1    3
658785  Attempt: 3    3

1 个答案:

答案 0 :(得分:1)

您可以像这样使用figure() plot([a_x, b_x], [a_y, b_y]) xlim([0 320]) ylim([0 320]) grid on ax=gca; ax.YDir = 'reverse';

not exists

另一种可能性是聚集:

select t.*
from t
where t.message = 'Attempt: 0' and
      not exists (select 1
                  from t t2
                  where t2.requestid = t.requestid and
                        t2.message = 'Attempt: 2'
                 );