一个关于子查询的问题求解决!

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这么查询是可以的,没有报错