2016-10-14 6 views
2

これはExcel用のInactive Control用です。Inventive Control for ExcelのSQLエラー

2番目のCREATE TABLEでエラーが発生する原因は何ですか?

CREATE TABLE [email protected] 
AS 
SELECT ID 
,  Code 
,  AddressLine1 
,  Name 
,  Parent 
FROM Accounts 
WHERE ID=$P{P_ACCOUNTID} 

CREATE TABLE [email protected] 
AS 
SELECT ID 
,  Code 
,  AddressLine1 
,  Name 
,  Parent 
FROM Accounts 
WHERE Parent IN (SELECT ID FROM [email protected]) 

CREATE TABLE [email protected] 
AS 
SELECT ID 
,  Code 
,  AddressLine1 
,  Name 
,  Parent 
FROM Accounts 
WHERE Parent IN (SELECT ID FROM [email protected]) 

SELECT * FROM [email protected] 
UNION ALL 
SELECT * FROM [email protected] 
UNION ALL 
SELECT * FROM [email protected] 
+0

こんにちは、ようこそ。これはあなたの最初の質問であるようです。質問の書式設定に関するSOのガイドラインに目を通すことをお勧めします。常にラップタグ内にコードをラップします。私は今あなたのためにそれをしました。ハッピーコーディング! –

+0

エラーメッセージは何ですか? –

+1

構造体 'where ... in(select ...)'は現在、INの後の部分をfromのすべての行で評価されることに注意してください。 Invantive SQLは、現在、相関サブクエリと非相関サブクエリの間に違いはありません。パフォーマンス上の理由から、in()の代わりにjoinに書き換えることができます。 –

答えて

2

「アカウントの識別子があいまいです。」というエラーが表示されている可能性があります。必要に応じて識別子を追加できます。

正確なオンラインアカウントの動作するSQLは以下のとおりです。 create tableの代わりにcreate or replace tableを使用することに注意してください。特権は変更されませんが、必要な場合は最初に削除されます。

CREATE OR REPLACE TABLE [email protected] 
AS 
SELECT act.ID 
,  act.Code 
,  act.AddressLine1 
,  act.Name 
,  act.Parent 
FROM exactonlinerest..Accounts act 


CREATE OR REPLACE TABLE [email protected] 
AS 
SELECT act.ID 
,  act.Code 
,  act.AddressLine1 
,  act.Name 
,  act.Parent 
FROM exactonlinerest..Accounts act 
join [email protected] n1 
on  n1.id = act.Parent 

CREATE OR REPLACE TABLE [email protected] 
AS 
SELECT act.ID 
,  act.Code 
,  act.AddressLine1 
,  act.Name 
,  act.Parent 
FROM exactonlinerest..Accounts act 
join [email protected] n2 
on  n2.id = act.Parent 

SELECT * FROM [email protected] 
UNION ALL 
SELECT * FROM [email protected] 
UNION ALL 
SELECT * FROM [email protected] 
+0

削除された次の質問に対する答えは、実際には最良のものです。この構文で私は良い結果を得ます。 –

関連する問題