2016-11-02 10 views
0

私はOracleには新しく、私は常にSQL Serverで使用した非常に便利なタイプのクエリを再現しようとしています。; tablename as(..)as Oracle with

私はあなたがいくつかのエラー(から欠落列名にスペース、...)を持って、このクエリ

; With tablename as (
Select 
Column1 , 
Column2 
From table1 
) 
, with tablename2 as (
Select 
column3, 
Column4 
) 
Select 
Column 2 , 
column 4 
from Tablename t1 
left outer join tablename t2 
on t1.column1 = t2.column3 
+6

- OracleはSQL標準に従っていることを除いて、ステートメント終了文字を置きます( ';')それが属する場所:終了(第二 'WITH'で無効です - SQL Serverでも)。次のマニュアルを参照してください。https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#BABCGAAJ(一般的な表の表現は、キーワード 'with'を使用し、 '; with'を使用しないで導入されます) –

+1

また、注意'Column 2'と' Column 4'があり、 'Column2'と' Column4'があるはずです。 – FDavidov

+0

このサイトでは、これに適切なOracle構文を使用するソリューションが多数見つかります。ここには昨日提供したソリューションがあります。 http://stackoverflow.com/questions/40366876/oracle-sql-merge-multiple-rows-with-same-id-but-out-of-order-identifiers/40367201#40367201(その答えは別のすばらしい機能を示しています。残念ながらOracle 11.2以降が必要な列の別名を最上位に置くことができます。 – mathguy

答えて

2

ためのOracleに相当するものを見つけようとしています。 これは動作するはずです:

Oracleで同じだ
WITH tablename AS (SELECT Column1, Column2 FROM table1), 
    tablename2 AS (SELECT column3, Column4 FROM table2) 
SELECT Column2, column4 
    FROM Tablename t1 LEFT OUTER JOIN tablename t2 ON t1.column1 = t2.column3