我有一个查询,如果没有匹配的项目ID,我似乎无法让它显示'没有项目':
(select (case when prj.Proj_ID is null or prj.Proj_ID = ''
then 'No Project'
ELSE prj.Proj_ID + ', ' + prj.[DESC]
END)
from prj
where prj.Proj_ID = other.Proj_ID) as 'Project Description'
有什么想法吗?
答案 0 :(得分:0)
SELECT
CASE WHEN (prj.Proj_ID IS NULL OR prj.Proj_ID = '') THEN 'No Project'
ELSE prj.Proj_ID + ', ' + prj.[DESC]
END as 'Project Description'
FROM
other
LEFT JOIN prj on prj.Proj_ID = other.Proj_ID
如果你从OTHER数据库加入PRJ,你需要加入它。如果在PRJ表中找不到Proj_ID,则case语句将返回“No Project”。括号将有助于解决prj.Proj_ID
的条件语句。
在原始查询中,您似乎没有指定要加入的表,而是通过语句where prj.Proj_ID = other.Proj_ID) as 'Project Description'
指示加入。
答案 1 :(得分:0)
试试这样:
SELECT
CASE WHEN (other.Proj_ID IS NULL OR other.Proj_ID = '') THEN 'No Project'
ELSE other.Proj_ID + ', ' + prj.[DESC]
END as 'Project Description'
FROM
other
LEFT JOIN prj on ISNULL(prj.Proj_ID,0) = ISNULL(other.Proj_ID,0)
答案 2 :(得分:0)
您还应检查项目描述是否为null,否则在将prj.Proj_ID + ', '
连接到它时可能会返回null:
SELECT CASE
WHEN prj.Proj_ID IS NULL
OR prj.Proj_ID = '' THEN 'No Project'
ELSE prj.Proj_ID + COALESCE(', ' + prj.[DESC], '')
END AS 'Project Description'
FROM prj
LEFT OUTER JOIN other
ON prj.Proj_ID = other.Proj_ID
(我也是这样做的,如果描述为null,它也不会显示逗号)