Я хочу объединить 2 таблицы 'addresses'
и 'user_info'
на user_id
и app_id
(который является числом, или это нуль), как эти 2 примера:
select * from user_info
left outer join addresses on addresses.user_id = user_info.user_id
and addresses.app_id is null
select * from user_info
left outer join addresses on addresses.user_id = user_info.user_id
and addresses.app_id = 1234
То, каким должен быть app_id, сложно, и я написал функцию для его возврата. Возвращает строку, которая будет, например, "is null" или "= 1234".
Я пытаюсь вызвать его с помощью следующего синтаксиса:
select * from user_info
left outer join addresses on addresses.user_id = user_info.user_id
and addresses.app_id dbo.fnGetAppId(addresses.user_id)
Я получаю эту ошибку:
Сообщение 4145, уровень 15, состояние 1, строка 3 An
выражение небулева типа
указано в контексте, где
ожидается состояние, около 'dbo'.
Я хотел бы сделать запрос очень простым, поскольку он не требует определения, возвращает ли функция нулевое значение или нет.
Можете ли вы предложить лучший способ сделать вызов очень простым?
(я в sql server 2005.)