SQL结果:带有Case语句的员工姓名和位置

时间:2018-04-13 16:15:42

标签: sql join case-statement

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

Example

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]

1 个答案:

答案 0 :(得分:1)

没有任何汇总功能,因此您不需要使用java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:142) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) 子句。

根据您的预期结果和表架构,我认为您不需要使用group by

因为case when条件CASE WHEN始终等于emp.[emp_id] = empb.[emp_id]语句

join

您可以直接从JOIN [dbo].[empbld] as empb on empb.[emp_id] = emp.[emp_id] 表格获取bld_name

bl

sqlfiddle:http://sqlfiddle.com/#!18/a3979/1