很抱歉,如果这很简单,但不知怎的,我在我的桌子上敲打头,因为我总是遇到嵌套查询的问题。
基本查询:选择FILENO,CODE,RECNO FROM DOCUMENT WHERE CODE =' CODE1'结果如下表所示。
FILENO CODE RECNO
FILE1 CODE1 13494
FILE2 CODE1 13499
FILE3 CODE1 13597
第二个查询:选择FILENO,CODE,RECNO FROM DOCUMENT,其中CODE =' CODE2'结果如下表所示。
FILENO CODE RECNO
FILE1 CODE2 13495
FILE2 CODE2 13498
FILE3 CODE2 13600
我需要检查CODE2是否在CODE1之前输入。结果可能是第一个带有RESULT列的表,其中包含Y或N.
答案 0 :(得分: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'
答案 1 :(得分: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;