大多数系统都会有一个用户定义的函数 (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
出于我以外的原因