我有以下表格及相应的数据:
RequestsTable
ReqID | ReqBy | ReqDate
1 | User1 | 30/04/2013
2 | User2 | 30/04/2013
3 | MasterUser | 30/04/2013
和
RequestorsTable
ReqUserName | ReqFullName
User1 | Sample User 1
User2 | Sample User 2
我需要输出如下:
ReqID | ReqBy | ReqDate
1 | Sample User 1 | 30/04/2013
2 | Sample User 2 | 30/04/2013
3 | MasterUser | 30/04/2013
我可以知道怎么办^^?
快速说明:MasterUser是一个超级用户帐户,因此不在数据库中,但可以提出请求。
感谢您的帮助。
答案 0 :(得分:5)
使用ISNULL
和LEFT OUTER JOIN
可以选择性地选择要在结果集中返回的列。
示例选择语句
SELECT rt.ReqID, ISNULL(rst.ReqFullName, rt.ReqBy), rt.ReqDate
FROM RequestsTable rt
LEFT OUTER JOIN RequestorsTable rst ON rst.ReqUserName = rt.ReqBy
ISNULL
的替代方案是COALESCE
,more or les执行类似的功能。
示例选择语句
SELECT rt.ReqID, COALESCE(rst.ReqFullName, rt.ReqBy), rt.ReqDate
FROM RequestsTable rt
LEFT OUTER JOIN RequestorsTable rst ON rst.ReqUserName = rt.ReqBy
答案 1 :(得分:1)
试试这个 -
SELECT
rt.ReqID
, ReqBy = ISNULL(rt2.ReqFullName, rt.ReqBy)
, rt.ReqDate
FROM dbo.RequestsTable rt
LEFT JOIN dbo.RequestorsTable rt2 ON rt.ReqBy = rt2.ReqUserName