2016-10-14 1 views
2

Это для Invantive Control для Excel.Ошибка SQL в Invantive Control для Excel

Что может быть причиной ошибки во втором 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. Кажется, это ваши первые вопросы. Я предлагаю вам ознакомиться с инструкциями SO по форматированию вопроса. Всегда оберните свой код внутри тега обертки. Я сделал это для вас, теперь помощник. Хорошая кодировка! –

+0

Какое сообщение об ошибке вы получаете? –

+1

Обратите внимание, что конструкция 'where ... in (select ...)' в настоящее время вызывает часть после того, как IN будет оцениваться в каждой строке в. Invantive SQL в настоящее время не делает разницы между коррелированными и некоррелированными подзапросами. По соображениям производительности вам может потребоваться переписать его в соединение вместо имени in(). –

ответ

2

Возможно, вы получили сообщение об ошибке: «Учетные записи идентификатора« неоднозначны ». При необходимости вы можете добавить идентификатор.

Ниже приведен список рабочих SQL для точных онлайн-счетов. Обратите внимание, что использование create or replace table вместо create 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

Ответ на удаленный следующий вопрос на самом деле самый лучший. С этим синтаксисом я получаю хорошие результаты. –