Sql server 如何将联接用作选择列
我有以下疑问:Sql server 如何将联接用作选择列,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我有以下疑问: SELECT X.ID, X.NAME, CASE R.ID WHEN NOT NULL THEN 1 ELSE 0 END ISRELATED FROM TABLE X INNER JOIN RELATIVE R ON R.NAMEID = X.ID 我试图得到类似于此结构的结果,而不是从表X中提取任何重复的行: ID NAME ISRELATED (boolean) 有什么建议吗?谢谢。试试这个 SELECT DISTINCT X.ID, X.NAME, CASE WHE
SELECT X.ID, X.NAME, CASE R.ID WHEN NOT NULL THEN 1 ELSE 0 END ISRELATED
FROM TABLE X
INNER JOIN RELATIVE R ON R.NAMEID = X.ID
我试图得到类似于此结构的结果,而不是从表X中提取任何重复的行:
ID
NAME
ISRELATED (boolean)
有什么建议吗?谢谢。试试这个
SELECT DISTINCT X.ID, X.NAME, CASE WHEN R.ID IS NOT NULL THEN 1 ELSE 0 END ISRELATED
FROM TABLE X
INNER JOIN RELATIVE R ON R.NAMEID = X.ID
使用内部联接将仅返回X中在R中具有相应行的行。请改用左外部联接
SELECT DISTINCT X.ID, X.NAME, CASE WHEN R.ID IS NOT NULL THEN 1 ELSE 0 END ISRELATED
FROM TABLE X
LEFT OUTER JOIN RELATIVE R ON R.NAMEID = X.ID
我认为您在
案例中有一个错误
,必须使用左连接
SELECT DISTINCT
X.ID,
X.NAME,
CASE WHEN R.ID IS NOT NULL THEN 1 ELSE 0 END ISRELATED
FROM TABLE X
LEFT JOIN RELATIVE R ON R.NAMEID = X.ID
我修改了本例中的case语句,以更好地说明这一需要,但当前返回的相关列的值都相同的重复项,如all one或zero必须将
DISTINCT
添加到语句中。我不知道如何对此执行case语句,以及使用哪种类型的联接。WHEN NOT NULL不起作用。它返回ISRELATED的所有1,而不显示0。也许您需要解释您的确切期望,但我的猜测是,由于您正在使用internal
join,它将只返回RELATIVE
表中具有现有记录的1,可能需要尝试LEFT-OUTER
join