2016-07-29 5 views
0

함께 :SQL 2000 INCORECT 근처의 구문이 코드 사용하고

WITH cte AS(SELECT panelname FROM inventorypanelcaptions UNION ALL SELECT CAST(0 AS VARCHAR(50)) FROM INVENTORYPANELCAPTIONS) SELECT CASE WHEN cast(min(right(panelname, 2) + 1) as varchar(50)) < 10 THEN 'o0' ELSE 'o' END + cast(min(right(panelname, 2) + 1) as varchar(50)) FROM cte WHERE NOT EXISTS (SELECT panelname FROM inventorypanelcaptions WHERE right(inventorypanelcaptions.panelname, 2)= right(cte.panelname, 2)+1) ", con); 

을 나는 그것이 SQL 2000에서 작동하려면

+0

지원되는 버전의 SQL Server로 업그레이드하면 코드가 작동합니다. –

+0

이렇게하는 방법이 없습니까? – DiH

+5

CTE가 SQL Server 2005에 추가되었습니다.이 쿼리를 실행하려면 적어도 멀리 업그레이드해야합니다. 또한 Sql Server 2000과 Sql Server 2005는 모두 단종되었습니다 **. 그들은 더 이상 ** ** ** 패치 또는 업데이트를받지 못했습니다 ... 중요한 보안 업데이트조차하지 않습니다. 계속 사용하는 것은 무책임하고 위험합니다. 지원되는 데이터베이스로 업그레이드하는 것을 최우선으로해야합니다. –

답변

1

'와'잘못된 구문이 가까운지고있어, 당신은에 이동할 수 있습니다 하위 쿼리

SELECT CASE WHEN cast(min(right(panelname, 2) + 1) as varchar(50)) < 10 THEN 'o0' ELSE 'o' END + cast(min(right(panelname, 2) + 1) as varchar(50)) 
    FROM (
     SELECT panelname FROM inventorypanelcaptions UNION ALL SELECT CAST(0 AS VARCHAR(50)) 
     FROM INVENTORYPANELCAPTIONS 
    ) cte 
    WHERE NOT EXISTS ( SELECT panelname 
         FROM inventorypanelcaptions 
         WHERE right(inventorypanelcaptions.panelname, 2)= right(cte.panelname, 2)+1 
        ) ", con); 
+1

좀 더 정확히 말하면 파생 테이블입니다. –

+0

감사합니다. 구별이 있는지 몰랐습니다. – grambo25

+0

고맙습니다. – DiH