2017-06-05 16 views
0

名前にダッシュと32文字を超えるSQLサーバーテーブルから選択しようとしています。Sasプロセスsql

私はパススルーと引用符を使ってみましたが、喜びはありません。

私はビューが生成される可能性はほとんどなく、読み取りアクセスのみが可能です。

proc sql; 
    drop table poss_gw1; 
    create table poss_gw1 as (select * from cdb.'''form_Garden_waste_service_AF-Form-59fb9946-0f6e-4cd9-‌​9b30-82fc5d96ec71'''‌​n as agg); 
quit; 

proc sql; 
    connect to odbc(dsn=FirmstepReporting user=myname pwd=mypwd); 
    Create table work.tmp_gw as select * from connection to odbc (select * from "'form_Garden_waste_service_AF-Form-59fb9946-0f6e-4cd9-9b30-‌​82fc5d96ec71'"n); 
    disconnect from odbc; 
quit; 

いずれかのアイデアはありますか?

+1

こんにちはAndrew、こんにちは。試行されたクエリとクエリしているテーブルのサンプルデータを編集し、そのサンプルから目的の出力を編集してください。あなたの問題を理解し、助けてくれる方がずっと良いでしょう。 –

+0

こんにちはコード私は試みました: proc SQL; ドロップテーブルposs_gw1; (CDBから選択 * '' 'form_Garden_waste_service_AF-フォーム59fb9946-0f6e-4cd9-9b30-82fc5d96ec71' '' N AGGなど。)のようなテーブルposs_gw1を作成します。 終了します。 /*引用符のすべてのdiff組み合わせで試した*/ /*もう一度差分を試してみました。*/diff proc sql; odbcに接続します(dsn = FirmstepReportingユーザー= myname pwd = mypwd)。 テーブルwork.tmp_gwを としてください。select * from connection to odbc (select * from "'form_Garden_waste_service_AF-Form-59fb9946-0f6e-4cd9-9b30-82fc5d96ec71'" n); odbcから切断します。 終了します。 –

+1

コメントではなく質問に追加してください。上の編集ボタンをクリックしてそこにコードを追加し、コードがフォーマットされるように各行の前に4つのスペースを追加します。 –

答えて

2

パススルーコードでSQL Server構文を使用する必要があります。

create table work.tmp_gw as 
select * from connection to odbc 
(select * 
from "form_Garden_waste_service_AF-Form-59fb9946-0f6e-4cd9-9b30-‌​82fc5d96ec71" 
); 

変数名もSASで有効でない場合は、パススルーコードの名前も変更する必要があります。

create table work.tmp_gw as 
select * from connection to odbc 
(select id 
     , "invalid-name" as valid_name 
from "form_Garden_waste_service_AF-Form-59fb9946-0f6e-4cd9-9b30-‌​82fc5d96ec71" 
); 
+0

これは動作します!おかげでTom :) –