0

对不起,如果这很简单,但不知何故,我把头撞在桌子上,因为我一直在嵌套查询方面遇到麻烦。

基本查询:Select FILENO, CODE, RECNO FROM DOCUMENT WHERE CODE = 'CODE1' 结果如下表。

FILENO    CODE    RECNO
FILE1     CODE1   13494
FILE2     CODE1   13499
FILE3     CODE1   13597

第二个查询:Select FILENO, CODE, RECNO FROM DOCUMENT WHERE CODE = 'CODE2' 结果如下表。

FILENO    CODE    RECNO
FILE1     CODE2   13495
FILE2     CODE2   13498
FILE3     CODE2   13600

我需要检查是否在 CODE1 之前输入了 CODE2。结果可能是第一个带有 RESULT 列的表,其中包含 Y 或 N。

4

2 回答 2

0

不知道为什么要在这里使用嵌套查询。加入似乎会起作用..尽管您没有说如果两者相等会发生什么。

现在如果有,如果 code1 或 code2 不存在,则不会返回任何记录。如果需要,我们可以使用外连接...

SELECT A.FileNo
     , A.Code
     , A.RecNo
     , CASE when A.RecNo > B.RecNo then 'Y' 
            when A.RecNo < B.RecNo then 'N' 
            else 'Undef' End as isCode1Newer
FROM Document A
INNER JOIN Document B
  on A.FileNo = B.FileNo
WHERE A.Code = 'CODE1'
  and B.Code = 'CODE2' 
于 2016-09-21T20:31:04.413 回答
0

您可以汇总每个代码来检查这一点,以便只需读取一次表格:

select
  code,
  case when
    max(case when code = 'CODE1' then recno end) >
    max(case when code = 'CODE2' then recno end) then 'Y' else 'N'
  end as c2_before_c1
from mytable
where code in ('CODE1', 'CODE2')
group by code;
于 2016-09-21T23:54:52.880 回答