在SQL中使用union和internaljoin
我有下面的函数,它合并两个具有相同字段但数据不同的表,然后对一些字段执行内部联接。 然而,我得到了一个“不正确的语法附近的'id'”的id,毕竟。我努力想知道我的语法哪里不正确在SQL中使用union和internaljoin,sql,sql-server,Sql,Sql Server,我有下面的函数,它合并两个具有相同字段但数据不同的表,然后对一些字段执行内部联接。 然而,我得到了一个“不正确的语法附近的'id'”的id,毕竟。我努力想知道我的语法哪里不正确 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
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
如果(@booking\u id为空,@id为空)
开始
挑选
A.id,
A.预订id,
A.待办事项类型,
A.到期,
A.紧急,
A.地位,
A.评论,
A.创建用户,
A.创建日期,
A.删除日期,
名字,
姓,
H.你的名字,
开始日期,
H.日期(完),
TT.lookup_desc todo_type_desc,
TS.lookup\u desc status\u desc
从…起
(
挑选
id、预订id、待办事项类型、到期、紧急、状态、评论、创建用户、创建日期、删除日期
从…起
[待办事项]
联合所有
id、预订id、待办事项类型、到期、紧急、状态、评论、创建用户、创建日期、删除日期
从…起
[待办事项接线员]
)
A.
A.todo_type=TT.LOOKUP_id上的内部联接查找TT
A.status=TS.LOOKUP\u id上的内部联接查找TS
A.BOOKING\u id=B.BOOKING\u id上的内部加入预订B
B.HOLIDAY\u id=H.HOLIDAY\u id上的内部连接假日参考H
其中A.delete_date为NULL,TS.lookup_desc“Closed”
按A.create\u日期订购
结束
您需要在您的全部联合后添加选择
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]
这看起来像SQL Server代码,所以我添加了标记。