簡體   English   中英

CASE語句怎么寫?

[英]How to write a CASE statement?

我正在嘗試編寫一個簡單的 case 語句,該語句在值的情況下連接兩個字段,但默認為與另一個元素連接的原始字段。

SELECT 
RCDEA.data_element_ID,
RCDEA.answer_ID,
RCDEA.answer_text,
AA.name answer_name,
(
 CASE 
    WHEN MM.export_value = 'MAYBACH' THEN CONCAT('S', "|", RCDEA.create_DTM) 
    WHEN MM.export_value = 'PICPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
    WHEN MM.export_value = 'POCPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
    ELSE CONCAT(MM.export_value, "|", RCDEA.create_DTM) 
) AS poi_multi,

MM.export_value_2 AS mapping_export_value_2,
RCDEA.create_DTM,
CAST(DATE_FORMAT(RCDEA.create_DTM,"%m%d%Y") AS CHAR) AS source_date,
CAST(DATE_FORMAT(RCDEA.create_DTM,"%H%i%s") AS CHAR) AS source_time,
CASE 
    WHEN RCDEA.data_element_ID = 11177 THEN CAST(DATE_FORMAT(DATE_ADD(F.create_DTM, INTERVAL 180 DAY), "%m%d%Y") AS CHAR) ELSE '' END AS cert_expn_date_source,
F.event_token_ID
FROM efn.R_Consumer_Data_Element_Answer RCDEA
JOIN efn.Footprints F ON RCDEA.footprint_ID = F.footprint_ID
    AND F.consumer_ID = RCDEA.consumer_ID
LEFT JOIN efn.Answers AA ON RCDEA.answer_ID = AA.answer_ID
LEFT JOIN kettle_data_transfer.Mappings MM ON RCDEA.data_element_ID = MM.data_element_ID AND RCDEA.answer_ID = MM.answer_ID
AND MM.data_transfer_ID = 12

您錯過了CASE語句中的END

   ....
    (
 CASE MM.export_value
    WHEN 'MAYBACH' THEN CONCAT('S', "|", RCDEA.create_DTM) 
    WHEN 'PICPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
    WHEN 'POCPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
    ELSE CONCAT(MM.export_value, "|", RCDEA.create_DTM) 
 END
) AS poi_multi

    ....

完整查詢應如下所示:

SELECT 
RCDEA.data_element_ID,
RCDEA.answer_ID,
RCDEA.answer_text,
AA.name answer_name,
(
     CASE MM.export_value
        WHEN 'MAYBACH' THEN CONCAT('S', "|", RCDEA.create_DTM) 
        WHEN 'PICPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
        WHEN 'POCPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
        ELSE CONCAT(MM.export_value, "|", RCDEA.create_DTM) 
     END
    ) AS poi_multi,
MM.export_value_2 AS mapping_export_value_2,
RCDEA.create_DTM,
CAST(DATE_FORMAT(RCDEA.create_DTM,"%m%d%Y") AS CHAR) AS source_date,
CAST(DATE_FORMAT(RCDEA.create_DTM,"%H%i%s") AS CHAR) AS source_time,
CASE WHEN RCDEA.data_element_ID = 11177 THEN CAST(DATE_FORMAT(DATE_ADD(F.create_DTM, INTERVAL 180 DAY), "%m%d%Y") AS CHAR) ELSE '' END AS cert_expn_date_source,
F.event_token_ID
FROM efn.R_Consumer_Data_Element_Answer RCDEA
JOIN efn.Footprints F ON RCDEA.footprint_ID = F.footprint_ID
    AND F.consumer_ID = RCDEA.consumer_ID
LEFT JOIN efn.Answers AA ON RCDEA.answer_ID = AA.answer_ID
LEFT JOIN kettle_data_transfer.Mappings MM ON RCDEA.data_element_ID = MM.data_element_ID AND RCDEA.answer_ID = MM.answer_ID
AND MM.data_transfer_ID = 12

從第一個CASE語句中刪除大括號 () 並添加END AS

SELECT 
RCDEA.data_element_ID,
RCDEA.answer_ID,
RCDEA.answer_text,
AA.name answer_name,
CASE 
    WHEN MM.export_value = 'MAYBACH' THEN CONCAT('S', "|", RCDEA.create_DTM) 
    WHEN MM.export_value = 'PICPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
    WHEN MM.export_value = 'POCPE' THEN CONCAT('PACPE', "|", RCDEA.create_DTM) 
    ELSE CONCAT(MM.export_value, "|", RCDEA.create_DTM) 
END AS poi_multi,

MM.export_value_2 AS mapping_export_value_2,
RCDEA.create_DTM,
CAST(DATE_FORMAT(RCDEA.create_DTM,"%m%d%Y") AS CHAR) AS source_date,
CAST(DATE_FORMAT(RCDEA.create_DTM,"%H%i%s") AS CHAR) AS source_time,
CASE 
    WHEN RCDEA.data_element_ID = 11177 THEN CAST(DATE_FORMAT(DATE_ADD(F.create_DTM, INTERVAL 180 DAY), "%m%d%Y") AS CHAR) ELSE '' END AS cert_expn_date_source,
F.event_token_ID
FROM efn.R_Consumer_Data_Element_Answer RCDEA
JOIN efn.Footprints F ON RCDEA.footprint_ID = F.footprint_ID
    AND F.consumer_ID = RCDEA.consumer_ID
LEFT JOIN efn.Answers AA ON RCDEA.answer_ID = AA.answer_ID
LEFT JOIN kettle_data_transfer.Mappings MM ON RCDEA.data_element_ID = MM.data_element_ID AND RCDEA.answer_ID = MM.answer_ID
AND MM.data_transfer_ID = 12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM