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
语法?