sql oracle-筛选查询sql时使用大小写

sql oracle-筛选查询sql时使用大小写,sql,oracle,Sql,Oracle,我有以下疑问 select ens.ID_ENS, ens.NOM_ENS, -- for the first SURVEILLANT disp.SALLE_EXAM, disp.NB_HEURES_ENS, -- for the second SURVEILLANT disp.SALLE_EXAM2, disp.NB_HEURES_ENS2 from ESP_ENSEIGNANT ens, ESP_MODULE_PAN

我有以下疑问

select
    ens.ID_ENS,
    ens.NOM_ENS,
    
   -- for the first SURVEILLANT
    disp.SALLE_EXAM,
    disp.NB_HEURES_ENS,

    -- for the second SURVEILLANT
    disp.SALLE_EXAM2,
    disp.NB_HEURES_ENS2

from ESP_ENSEIGNANT ens, ESP_MODULE_PANIER_CLASSE_SAISO disp
WHERE ens.ID_ENS IN (disp.SURVEILLANT, disp.SURVEILLANT2) AND ens.NOM_ENS != 'A AFFECTER';
我想更新显示SALLE_考试的查询,请注意,仅用于监督

select
    ens.ID_ENS,
    ens.NOM_ENS,

    CASE
        WHEN ens.ID_ENS = disp.SURVEILLANT THEN (disp.SALLE_EXAM AS "EXAM", disp.NB_HEURES_ENS AS "HOURDISP")
        WHEN ens.ID_ENS = disp.SURVEILLANT2 THEN (disp.SALLE_EXAM2 AS "EXAM", disp.NB_HEURES_ENS2 AS "HOURDISP")
    END

from ESP_ENSEIGNANT ens, ESP_MODULE_PANIER_CLASSE_SAISO disp
WHERE ens.ID_ENS IN (disp.SURVEILLANT, disp.SURVEILLANT2) AND ens.NOM_ENS != 'A AFFECTER';

您可以使用显式的
JOIN
语法重写查询,如下所示

SELECT ens.ID_ENS,
       ens.NOM_ENS,      
       CASE
         WHEN ens.ID_ENS = disp.SURVEILLANT THEN
           disp.SALLE_EXAM 
         WHEN ens.ID_ENS = disp.SURVEILLANT2 THEN
           disp.SALLE_EXAM2
       END AS "EXAM",
       CASE
         WHEN ens.ID_ENS = disp.SURVEILLANT THEN
          disp.NB_HEURES_ENS 
         WHEN ens.ID_ENS = disp.SURVEILLANT2 THEN
          disp.NB_HEURES_ENS2
       END AS "HOURDISP"
  FROM ESP_ENSEIGNANT ens
  JOIN ESP_MODULE_PANIER_CLASSE_SAISO disp
    ON ens.ID_ENS IN (disp.SURVEILLANT, disp.SURVEILLANT2)
   AND ens.NOM_ENS != 'A AFFECTER';

旁注:如果
disp.SURVEILLANT
disp.SURVEILLANT2
的值相等,则将分别选择
disp.SALLE\u考试
disp.NB\u HEURES
。例如,第一个组件具有优先权。

请提供样本数据和所需结果。为什么不使用正确、明确、标准、可读的
JOIN
语法?