Ошибка SQL в Invantive Control для Excel

Это для Invantive Control для Excel.

Что может быть причиной ошибки на втором CREATE TABLE?

CREATE TABLE niveau1@inmemorystorage
AS
SELECT ID
,      Code
,      AddressLine1
,      Name
,      Parent
FROM   Accounts
WHERE  ID=$P{P_ACCOUNTID}

CREATE TABLE niveau2@inmemorystorage
AS
SELECT ID
,      Code
,      AddressLine1
,      Name
,      Parent
FROM   Accounts
WHERE  Parent IN (SELECT ID FROM niveau1@inmemorystorage)

CREATE TABLE niveau3@inmemorystorage
AS
SELECT ID
,      Code 
,      AddressLine1
,      Name
,      Parent
FROM   Accounts
WHERE  Parent IN (SELECT ID FROM niveau2@inmemorystorage)

SELECT * FROM niveau1@inmemorystorage
UNION ALL
SELECT * FROM niveau2@inmemorystorage
UNION ALL
SELECT * FROM niveau3@inmemorystorage

1 ответ

Решение

Возможно, вы получили сообщение об ошибке: "Идентификатор" Счета "неоднозначен". Вы можете добавить идентификатор, где это необходимо.

Рабочий SQL для учетных записей Exact Online показан ниже. Пожалуйста, обратите внимание на использование create or replace table вместо create tableпривилегии не изменяются (когда они есть), но при необходимости таблица удаляется первой.

CREATE OR REPLACE TABLE niveau1@inmemorystorage
AS
SELECT act.ID
,      act.Code
,      act.AddressLine1
,      act.Name
,      act.Parent
FROM   exactonlinerest..Accounts act


CREATE OR REPLACE TABLE niveau2@inmemorystorage
AS
SELECT act.ID
,      act.Code
,      act.AddressLine1
,      act.Name
,      act.Parent
FROM   exactonlinerest..Accounts act
join   niveau1@inmemorystorage n1
on     n1.id = act.Parent

CREATE OR REPLACE TABLE niveau3@inmemorystorage
AS
SELECT act.ID
,      act.Code 
,      act.AddressLine1
,      act.Name
,      act.Parent
FROM   exactonlinerest..Accounts act
join   niveau2@inmemorystorage n2
on     n2.id = act.Parent

SELECT * FROM niveau1@inmemorystorage
UNION ALL
SELECT * FROM niveau2@inmemorystorage
UNION ALL
SELECT * FROM niveau3@inmemorystorage
Другие вопросы по тегам