SELECT CASE
WHEN T1.A = T2.A THEN
(SELECT T3.A FROM (SELECT 1 AS A FROM DUAL) T3 WHERE T2.A = T3.A)
ELSE
0
END AS TEST
FROM (SELECT 1 AS A FROM DUAL) T1, (SELECT 1 AS A FROM DUAL) T2
WHERE EXISTS (SELECT T4.A
FROM (SELECT T3.A
FROM (SELECT 1 AS A FROM DUAL) T3
WHERE T2.A = T3.A) T4)
上面的SQL在执行时,提示T2.A是无效的标识符,如果我把Exist里面套的那个Select T4.A From()T4这层去掉,就可以执行,
求解释!!!!
我这里报的不是这个错,你这是要查询什么?
SELECT 1 AS A FROM DUAL 这句语句写的有问题
应该是别名的作用域的问题,表的别名不能用到子子查询去。
可能你要改下SQL语句的结构,或者先将子子查询建成View。
csdn论坛上以前有提过你这样的问题 http://bbs.csdn.net/topics/360055536
SQLSERVER 2008这么查询是可以的,没有报错