Sql 将Case语句嵌套到多列中?

Sql 将Case语句嵌套到多列中?,sql,oracle,nested,case,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

我想知道是否有可能以一种方式构建我的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在同一行中,每个值在单独的列中返回

 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)
简单地汇总案例陈述。根据实际数据调整列和表名称。如果需要更多用户级信息,请将其添加到“选择”和“按行分组”


请提供一个数据和预期输出的示例,您使用的是哪种产品?博士后?神谕SQL只是一种查询语言,而不是特定数据库产品的名称。啊,是的,很抱歉,这是一个Oracle数据库。
SELECT user_ID,
       MAX(CASE WHEN R.CAMPUS = 'A' THEN R.NETID ELSE NULL END) AS "A_NETID",
       MAX(CASE WHEN R.CAMPUS = 'B' THEN R.NETID ELSE NULL END) AS "B_NETID",
       MAX(CASE WHEN R.CAMPUS = 'C' THEN R.NETID ELSE NULL END) AS "C_NETID", 
       MAX(CASE WHEN R.CAMPUS = 'D' THEN R.NETID ELSE NULL END) AS "D_NETID", 
       MAX(CASE WHEN R.CAMPUS = 'E' THEN R.NETID ELSE NULL END) AS "E_NETID", 
       MAX(CASE WHEN R.CAMPUS = 'F' THEN R.NETID ELSE NULL END) AS "F_NETID", 
       MAX(CASE WHEN R.CAMPUS = 'G' THEN R.NETID ELSE NULL END) AS "G_NETID" 
FROM myTable
GROUP BY user_ID