В большинстве систем будет доступна пользовательская функция (UDF). Некоторые не будут. я хочу использовать UDF, если он там есть:
SELECT
Users.*,
dbo.UserGroupMembershipNames(Users.UserID) AS MemberOfGroupNames
FROM Users
В противном случае откат к приемлемой альтернативе
SELECT
Users.*,
(SELECT TOP 1 thing FROM Something
WHERE Something.ID = Users.UserID) AS MemberGroupNames
FROM Users
Как дела?
Моя первая попытка, использующая очевидное решение, конечно же, не удалась:
SELECT
Users.*,
CASE
WHEN (OBJECT_ID('dbo.UserGroupMembershipNames') IS NOT NULL) THEN
dbo.UserGroupMembershipNames(Users.UserID)
ELSE (SELECT TOP 1 thing FROM Something
WHERE Something.ID = Users.UserID)
END AS MemberOfGroupNames
FROM Users
по не зависящим от меня причинам