嵌套的案例陈述到多列?

时间:2018-01-18 21:28:28

标签: sql oracle nested case

我想知道是否可以以一种为单行产生多列值的方式构建我的SQL case语句,而不是创建一个新行。现在我正在为多个校园中的用户搜索ID,并且我想为一个人显示一次这样的值。

CASE WHEN R.CAMPUS = 'A' THEN R.NETID ELSE NULL END AS "A_NETID",
   CASE WHEN R.CAMPUS = 'B' THEN R.NETID ELSE NULL END AS "B_NETID",
   CASE WHEN R.CAMPUS = 'C' THEN R.NETID ELSE NULL END AS "C_NETID", 
   CASE WHEN R.CAMPUS = 'D' THEN R.NETID ELSE NULL END AS "D_NETID", 
   CASE WHEN R.CAMPUS = 'E' THEN R.NETID ELSE NULL END AS "E_NETID", 
   CASE WHEN R.CAMPUS = 'F' THEN R.NETID ELSE NULL END AS "F_NETID", 
  CASE WHEN R.CAMPUS = 'G' THEN R.NETID ELSE NULL END AS "G_NETID"  

上面的代码是根据他们拥有的校园ID数量为每个用户创建一行,此时我不确定我能想到的是什么?

有没有人对此类案件有任何经验?

示例结果:Nathan在两个校区中,产生两行,每个校园ID一个,所需的目标是让Nathan的两个ID在每个值的单独列中的同一行中返回。 / p>

 MainID DISPLAY_NAME    EMAIL   RELATIONSHIP_CAMPUS A_NETID 
 B_NETID    C_NETID D_NETID E_NETID F_NETID G_NETID
 12345  Nathan Smith (null) (null)  nathansmith (null)  (null)  
 (null) (null)
 12345  Nathan Smith (null) nathanSmith (null)  (null)  (null)  
 (null) (null)

期望的结果将是:

MainID  DISPLAY_NAME    EMAIL   RELATIONSHIP_CAMPUS A_NETID 
 B_NETID    C_NETID D_NETID E_NETID F_NETID G_NETID
12345   Nathan Smith (null) nathanSmith nathansmith (null)  (null)  
 (null) (null)

1 个答案:

答案 0 :(得分:1)

只需汇总self.addSubview(nameLabel) 语句。根据实际数据调整列和表名称。如果您需要更多用户级别信息,请将其添加到CASESELECT行。

GROUP BY