假设我有一个用户表和一个用户记录表,其中列出了与该用户关联的数据源。
我想创建一个(Sql Server)视图,列出用户的所有内容,以及一个可选列,仅在满足特定条件时列出用户记录表中的特定行。
这是我到目前为止所拥有的:
create view
select user.*,user_record.external_identifier
from [User] user
left outer join [User Record] user_record on user_record.USER_ID = user.ID
添加 "where user_record.source = 'Peoplesoft' 将过滤掉没有关联 Peoplesoft 用户记录的用户行。
如果我在 User 表中有 100 个用户,其中 95 个用户有 Peoplesoft 用户记录,我希望返回 100 个记录,最后一列中的 5 个没有关联的记录为“null”。
我知道这相对简单,但我很挣扎。提前致谢。
在这种特殊情况下,您所拥有的不是
WHERE
条件。它实际上是连接的一部分。在英语中,您希望返回基于AND的匹配的每一行
[User]
和任何信息。[User Record]
USER_ID/ID
[User Record].source
Peoplesoft
将它放在 where 子句中意味着您希望从该结果集中返回每一行,并且从该结果集中有匹配的
[User]
任何信息仅返回该输出中满足条件的那些行。[User Record]
USER_ID/ID
[User Record].source = Peoplesoft