我有一个课程表:c_inst,c_year,c_program_type,c_unique_key。我希望找到c_program_type从2016年到2017年从“V”变为“P”的位置,反之亦然。我遇到了运行问题。这是我尝试过的,我知道这是错误的:
select * from courses a
where c_program_type in ('P','V')
and c_year = '2017'
and c_program_type != (select c_program_type from courses b where
a.c_unique_key = b.c_unique_key and c_year = '2016')
为sql noob执行此操作的最简单方法是什么?我也尝试过使用sql server临时表,但那里没有运气。提前致谢!
答案 0 :(得分:1)
你可以尝试
SELECT a.*
FROM courses a
LEFT JOIN courses b
ON a.c_unique_key = b.c_unique_key
AND a.c_program_type = b.c_program_type
AND b.c_year = '2016'
WHERE a.c_program_type IN ( 'P', 'V' )
AND a.c_year = '2017'
AND b.c_unique_key IS NULL