Вид из DB2 в SQL Server 2005 - PullRequest
       24

Вид из DB2 в SQL Server 2005

1 голос
/ 01 августа 2011

Я пытаюсь переместить представление между DB2 и SQL Server.

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, но не работает с SQL Server из-за предложения WHERE. Могу ли я получить рекомендацию о том, как переписать это представление для работы с SQL Server?

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

Обычно помогает определить, что означает «не работает» (например, какую ошибку вы получили), а также указать версию используемого вами 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 голосов
/ 01 августа 2011

в одну сторону

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)
...