tsd*_*ter 0 sql sql-server where-clause sql-server-2008
我有以下数据:
tblBio
bio bioid
some data 1
some data 2
Run Code Online (Sandbox Code Playgroud)
tblContact
email email_pub bioid
me@me.com 1 1
you@me.com 0 2
Run Code Online (Sandbox Code Playgroud)
我需要选择
bio + 'email: ' + email WHERE email_pub = 1
Run Code Online (Sandbox Code Playgroud)
我目前有:
SELECT b.bio + 'Email: ' + COALESCE(c.email, '')
FROM tblbio b
INNER JOIN tblContact c ON b.bioid = c.bioid
WHERE c.email_pub = 1
AND b.bioid = 1
Run Code Online (Sandbox Code Playgroud)
但是,我总是需要选择bio然后将文本'email:'以及电子邮件地址附加到最后,如果email_pub设置为1.拥有'WHERE email_pub = 1'使得如果email_pub为0然后没有选择.
同样,即使没有发布的电子邮件,也会始终显示"电子邮件:"文本.
谢谢,
托马斯
这是一个需要调用的场景CASE- CASE用于表达式的内联评估.
SELECT b.bio + 'Email: ' + CASE WHEN email_pub=1 THEN COALESCE(c.email, '') ELSE '' END
FROM tblbio b
INNER JOIN tblContact c ON b.bioid = c.bioid
WHERE b.bioid = 1
Run Code Online (Sandbox Code Playgroud)
使用CASE:
SELECT b.bio + case when email_pub = 1 then 'Email: ' + COALESCE(c.email, '') else '' end
FROM tblbio b
INNER JOIN tblContact c ON b.bioid = c.bioid
WHERE b.bioid = 1
Run Code Online (Sandbox Code Playgroud)