Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL结果:带案例语句的员工姓名和位置_Sql_Join_Case Statement - Fatal编程技术网

SQL结果:带案例语句的员工姓名和位置

SQL结果:带案例语句的员工姓名和位置,sql,join,case-statement,Sql,Join,Case Statement,在SQL中,如何将一个表中的建筑名称与另一个表的员工id进行匹配?当我运行查询时,如下图所示,建筑名称不会显示在结果中。它将其留空,如脚本的Case语句中所述。我认为这不应该发生。我附上了表格示例和预期结果的图像 SELECT DISTINCT emp.[emp_ln], emp.[emp_fn], empb.[emp_id], 'BUILDING_NAME' = CASE WHEN emp.[emp_id] = empb.[emp_id]

在SQL中,如何将一个表中的建筑名称与另一个表的员工id进行匹配?当我运行查询时,如下图所示,建筑名称不会显示在结果中。它将其留空,如脚本的Case语句中所述。我认为这不应该发生。我附上了表格示例和预期结果的图像

SELECT DISTINCT
emp.[emp_ln],
emp.[emp_fn],
empb.[emp_id],
'BUILDING_NAME' = CASE WHEN emp.[emp_id] = empb.[emp_id]                                             
                       THEN bld.[bld_name] ELSE ''
                                    END

FROM Employees as emp 
JOIN [dbo].[empbld] as empb on empb.[emp_id] = emp.[emp_id]
JOIN [dbo].[bl] as bld on bld.[bld_num] = empb.[bld_num]

Where emp.[emp_status] = ‘A’

Group by 
emp.[emp_ln],
emp.[emp_fn],
empb.[emp_id],
bld.[bld_name]


没有任何聚合函数,因此不需要使用
groupby
子句

从预期结果和表模式来看,我认为当

因为
条件
emp.[emp\u id]=empb.[emp\u id]
join
语句中的
大小写总是相等的

JOIN [dbo].[empbld] as empb on empb.[emp_id] = emp.[emp_id]
您可以直接从
bl
表中获取
bld\u name

SELECT 
  emp.[emp_ln],
  emp.[emp_fn],
  empb.[emp_id],
  bld.bld_name
FROM Employees as emp 
  JOIN [dbo].[empbld] as empb on empb.[emp_id] = emp.[emp_id]
  JOIN [dbo].[bl] as bld on bld.[bld_num] = empb.[bld_num]
Where emp.[emp_status] = ‘A’

SQLFIDLE:

您将
员工加入
empbld
确保
emp.[emp\u id]
始终等于
empb.[emp\u id]
,因此不需要案例陈述。您也不需要分组,因为您没有聚合任何内容。@squillman我想我遗漏了一些信息。我只需要员工编号和建筑编号匹配的建筑名称。那么,我需要案件陈述吗?那没有意义。根据您的样本数据,员工编号(emp_id?)和建筑编号永远不匹配。如果您指的是emp_id列,则不需要使用大小写,因为联接只返回emp_id值匹配的行。@squillman我试图使用一个示例查询,但我现在意识到这并不完全代表我当前正在处理的查询。我要试着自己解决这个问题。非常感谢。