我有以下两个表:
USER
FID UID VALUE
4 3 John
3 3 Doe
4 4 Jack
3 4 Russel
Run Code Online (Sandbox Code Playgroud)
应该相当清楚FID 3 = Surname,FID 4 = Name.
DATEDATA
UID DATE
3 1234
4 4321
Run Code Online (Sandbox Code Playgroud)
我想加入这两个表,所以我最终得到这样的东西:
UID DATE NAME SURNAME
3 1234 John Doe
4 4321 Jack Russel
Run Code Online (Sandbox Code Playgroud)
或......或者......
UID DATE FULLNAME
3 1234 John Doe
4 4321 Jack Russel
Run Code Online (Sandbox Code Playgroud)
那里有SQL大师吗?
这是我到目前为止:
SELECT UID, DATE, VALUE
from DATEDATA as D
left join USER as U
on U.uid = D.uid where fid = 3 OR fid = 4
Run Code Online (Sandbox Code Playgroud)
但这给了我这个:
UID DATE VALUE
3 1234 Doe
3 1234 John
4 4321 Russel
4 4321 Jack
Run Code Online (Sandbox Code Playgroud)
任何人?
SELECT D.UID, DATE, U.VALUE + ' ' + U2.Value as fullName
from DATEDATA as D
left join USER as U on U.uid = D.uid and U.fid = 3
left join USER as U2 on U2.uid = D.uid and U2.fid = 4
Run Code Online (Sandbox Code Playgroud)
虽然这可以在first或last为NULL时给你一个NULL名称.在这种情况下,如果您可以接受用户在系统中只有一个名称或另一个名称的情况,您可能希望使用ISNULL将任一名称设为空字符串.