2015-05-24 2 views
0

У меня есть функция ниже, где она объединяет 2 таблицы, которые имеют одинаковые поля, но разные данные, а затем выполняет внутренние объединения в некоторых из полей. Однако я получаю «Неправильный синтаксис рядом с« id »на id после UNION ALL. Я изо всех сил пытаюсь понять, где мой синтаксис неверен.Использование объединения и внутреннего соединения в SQL

IF (@booking_id is NULL AND @id is NULL) 
    BEGIN 

    SELECT 

    A.id, 
    A.booking_id, 
    A.todo_type, 
    A.due, 
    A.urgent, 
    A.status, 
    A.comment, 
    A.create_user, 
    A.create_date, 
    A.delete_date, 
    B.first_name, 
    B.last_name, 
    H.holiday_name, 
    H.date_start, 
    H.date_end, 
    TT.lookup_desc todo_type_desc, 
    TS.lookup_desc status_desc 

    FROM 

    (
     SELECT 
     id, booking_id, todo_type, due, urgent, status, comment, create_user, create_date, delete_date 
     FROM 
     [TODO] 
     UNION ALL 
     id, booking_id, todo_type, due, urgent, status, comment, create_user, create_date, delete_date 
     FROM 
     [TODO_OPERATOR] 
    ) 

    A 

    INNER JOIN LOOKUP TT ON A.todo_type=TT.lookup_id 
    INNER JOIN LOOKUP TS ON A.status=TS.lookup_id 
    INNER JOIN BOOKING B ON A.booking_id=B.booking_id 
    INNER JOIN HOLIDAY_REF H ON B.holiday_id=H.holiday_id 

    WHERE A.delete_date is NULL and TS.lookup_desc<>'Closed' 
    ORDER BY A.create_date 
    END 
+0

Это выглядит как код SQL Server, поэтому я добавляю тег. –

ответ

2

Вам нужно добавить SELECT после вашего UNION ALL

SELECT 
    id, booking_id, todo_type, due, urgent, status, comment, create_user, create_date, delete_date 
    FROM 
    [TODO] 
UNION ALL 
SELECT 
    id, booking_id, todo_type, due, urgent, status, comment, create_user, create_date, delete_date 
    FROM 
    [TODO_OPERATOR] 
+1

* лицоpalm * !!!!! – PeteTheGreek

Смежные вопросы