2011-08-01 1 views
1

DB2와 SQL Server간에보기를 이동하려고합니다.DB2에서 SQL Server 2005로보기

CREATE VIEW msu.bad_bus_cnty_st_mstr 
AS 
    SELECT id, 
     bus_cnty_cntry_cd, 
     bus_st, 
     bus_zip 
    FROM summit.mstr 
    WHERE (bus_cnty_cntry_cd, bus_st) IN (SELECT cnty_cntry_cd, 
                st 
              FROM uhelp.cnty_cntry_cd 
              WHERE 
     cnty_cntry_descr LIKE '%invalid%'); 

뷰는 DB2에서는 작동하지만 WHERE 절로 인해 SQL Server에서는 작동하지 않습니다. SQL Server에서 작동하도록이보기를 다시 작성하는 방법에 대한 권장 사항을 얻을 수 있습니까?

답변

0

(예를 들어, 당신이 얻을 않았다 어떤 오류) 또한 사용중인 SQL Server 버전을 지정할 수 있습니다.

불행히도 SQL Server는 둘 이상의 절이있는 IN()을 지원하지 않습니다. 당신이 당신의 볼이 방법을 다시 쓸 수 그러나 :

ALTER VIEW msu.bad_bus_cnty_st_mstr 
AS 
    SELECT id, 
     bus_cnty_cntry_cd, 
     bus_st, 
     bus_zip 
    FROM summit.mstr AS mstr 
    WHERE EXISTS 
    (
    SELECT 1 
     FROM uhelp.cnty_cntry_cd 
     WHERE cnty_cntry_descr LIKE '%invalid%' 
     AND cnty_cntry_cd = mstr.bus_cnty_cntry_cd 
     AND st = mstr.bus_st 
); 
+0

메시지 102, 수준 15, 상태 1, 프로 시저 bad_bus_cnty_st_mstr, 8 호선 ','근처의 구문이 잘못. 은 SQL2005에서받는 오류 msg입니다. – andyhky

+0

코드를 정확히 복사 했습니까? 8 행에는 쉼표가 없습니다. 코드에서 쉼표는 SELECT 목록에있는 열 사이의 쉼표입니다. 아마도 여분의 후행 쉼표를 거기에 추가 했습니까? –

+0

죄송합니다. 원래받은 오류 메시지 (예 : '작동하지 않는 것'의 의미) – andyhky

0

하나의 방법이 일반적으로 수단을 "작동하지 않습니다"을 정의하는 데 도움이

CREATE VIEW msu.bad_bus_cnty_st_mstr 
AS 
    SELECT id, 
     bus_cnty_cntry_cd, 
     bus_st, 
     bus_zip 
    FROM summit.mstr m 
    WHERE EXISTS(SELECT 1 FROM uhelp.cnty_cntry_cd c 
    WHERE c.cnty_cntry_descr LIKE '%invalid%' 
    AND c.bus_cnty_cntry_cd = m.bus_cnty_cntry_cd 
    AND c.st = m.bus_st)