1

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 で動作するように書き直す方法について、推奨事項はありますか?

4

2 に答える 2

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)
于 2011-08-01T14:44:12.603 に答える
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
  );
于 2011-08-01T14:47:14.030 に答える