Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

SQL parse error, problem with Exist()

Hi, in script i load two tables,

ACTIVITY_DEFS:

LOAD DESCRIPTIVENAME as DESCRIPTIVENAME_ACT_DEFS,

    ID as ID_ACT_DEFS,

    INSTRUCTIVENAME as INSTRUCTIVENAME_ACT_DEFS;

SQL SELECT DESCRIPTIVENAME,

    ID,

    INSTRUCTIVENAME

FROM "VT_DM_DATABASE"."BI_TWFLACTIVITYDEFS";

ACTIVITY_INSTANCES:

LOAD ACTIVITY_ID as ACTIVITY_ID_ACT_INST,

    ID as ID_ACT_INST,

    "IPROCESS_ID" as ID_PROCESS_INSTANCES,

    "LASTASSIGNEDBY_ID" as LASTASSIGNEDBY_ID_ACT_INST,

    "LASTWORKER_ID" as LASTWORKER_ID_ACT_INST,

    STARTDATE as NA_STAN_DATA_ACT_INST,

SQL SELECT ACTIVITY_ID,

    ID,

    "IPROCESS_ID",

    "LASTASSIGNEDBY_ID",

    "LASTWORKER_ID",

    STARTDATE

FROM "VT_DM_DATABASE"."BI_TWFLACTIVITYINSTANCES" WHERE EXISTS (ID_ACT_DEFS, ACTIVITY_ID);

And after adding this WHERE EXISTS ... statement i got the following error :

SQL##f - SqlState: 37000, ErrorCode: 4294963590, ErrorMsg: [Teradata][ODBC Teradata Driver][Teradata Database] Syntax error: parse error.

SQL SELECT ACTIVITY_ID,

    ID,

    "IPROCESS_ID",

    "LASTASSIGNEDBY_ID",

    "LASTWORKER_ID",

    STARTDATE

FROM "VT_DM_DATABASE"."BI_TWFLACTIVITYINSTANCES" WHERE EXISTS (ID_ACTIVITY_DEFS, ACTIVITY_ID)

I tried almost everything to solve this, what am i missing ?

1 Solution

Accepted Solutions
Peter_Cammaert
Partner - Champion III
Partner - Champion III

EXISTS() is a QlikView function, not a SQL function. You cannot use QlikView functions in SQL statements.

Add the WHERE EXISTS() clause to the PReceding LOAD instead, and you're good.

Best,

Peter

View solution in original post

6 Replies
Peter_Cammaert
Partner - Champion III
Partner - Champion III

EXISTS() is a QlikView function, not a SQL function. You cannot use QlikView functions in SQL statements.

Add the WHERE EXISTS() clause to the PReceding LOAD instead, and you're good.

Best,

Peter

mato32188
Specialist
Specialist

Hi Jakub,

in where exists clause use also SELECT ... FROM syntax.

BR

M

ECG line chart is the most important visualization in your life.
anbu1984
Master III
Master III

SQL SELECT ACTIVITY_ID,

    ID,

    "IPROCESS_ID",

    "LASTASSIGNEDBY_ID",

    "LASTWORKER_ID",

    STARTDATE

FROM "VT_DM_DATABASE"."BI_TWFLACTIVITYINSTANCES" Where ID_ACT_DEFS Not In (Select ID from "VT_DM_DATABASE"."BI_TWFLACTIVITYDEFS");

Or

ACTIVITY_INSTANCES:

LOAD ACTIVITY_ID as ACTIVITY_ID_ACT_INST,

    ID as ID_ACT_INST,

    "IPROCESS_ID" as ID_PROCESS_INSTANCES,

    "LASTASSIGNEDBY_ID" as LASTASSIGNEDBY_ID_ACT_INST,

    "LASTWORKER_ID" as LASTWORKER_ID_ACT_INST,

    STARTDATE as NA_STAN_DATA_ACT_INST WHERE EXISTS (ID_ACT_DEFS, ACTIVITY_ID);

SQL SELECT ACTIVITY_ID,

    ID,

    "IPROCESS_ID",

    "LASTASSIGNEDBY_ID",

    "LASTWORKER_ID",

    STARTDATE

FROM "VT_DM_DATABASE"."BI_TWFLACTIVITYINSTANCES" ;

Not applicable
Author

I think you mean "ID_ACT_DEFS In" and not "ID_ACT_DEFS Not In"

rajeshvaswani77
Specialist III
Specialist III

Hi,

Exists will need a sub query.

You seem to be mixing the QlikView exists here.

thanks,

Rajesh Vaswani

anbu1984
Master III
Master III

Yes you are right