[英]Oracle SQL: Case statement
我不確定將 case 語句放在 select 還是 where 子句中。 當 cnt_subj = MEPC_PL 時,我試圖從表 c 中獲取數據,然后 metric_id 將等於表 m 中的 6135。 任何人都可以幫忙嗎? 先感謝您! :)
SELECT DISTINCT
m.metric_id AS metric_id,
m.subject_abbrevn AS p_subj,
m.table_abbrevn AS cnt_subj,
c.p_id AS p_id,
c.cnt_id AS cnt_id,
c.gl_id AS gl_id,
case c.cnt_subj
when 'MEPC_PL' then 6135
end m.metric_id
FROM
T_CROMS_CAT_T m,
croms_qc_currency_1_v c
我認為您想在CASE
表達式中添加一個ELSE
條件:
SELECT DISTINCT
m.metric_id AS metric_id,
m.subject_abbrevn AS p_subj,
m.table_abbrevn AS cnt_subj,
c.p_id AS p_id,
c.cnt_id AS cnt_id,
c.gl_id AS gl_id,
CASE c.cnt_subj WHEN 'MEPC_PL' THEN 6135 ELSE m.metric_id END AS metric_id_new
FROM T_CROMS_CAT_T m
INNER JOIN croms_qc_currency_1_v c
ON <some join condition here>
我認為這是您正在尋找的查詢:
SELECT DISTINCT
m.metric_id AS metric_id,
m.subject_abbrevn AS p_subj,
m.table_abbrevn AS cnt_subj,
c.p_id AS p_id,
c.cnt_id AS cnt_id,
c.gl_id AS gl_id,
FROM croms_qc_currency_1_v c
INNER JOIN T_CROMS_CAT_T m ON DECODE(c.cnt_subj, 'MEPC_PL', 6135, NULL) = m.metric_id;
你真的需要DISTINCT
嗎? 這些 ID 是否不止一行? 此外,如果您有其他需要翻譯的CNT_SUBJ
值,您可以擴展它。
您可以將JOIN
條件JOIN
為:
FROM T_CROMS_CAT_T m JOIN
croms_qc_currency_1_v c
ON m.metric_id = 6135 AND c.cnt_subj = 'MEPC_PL'
非常重要的是:這不會妨礙優化器,因此它應該比ON
子句中的DECODE()
或CASE
表達式快得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.