我正在尝试在 select 中使用 case 语句,但我有很多语法错误,有人可以告诉我我做错了什么的详细信息 我正在尝试:
SELECT DISTINCT
DECL.Mois,
Base.Rattachement_Date_Debut,
SUBSTR ('12345678', 3, 2 ) FROM Base.Rattachement_Date_Debut,
CASE SUBSTR ('12345678', 3, 2 ) FROM Base.Rattachement_Date_Debut
WHEN Base.Rattachement_Date_Debut IS NULL THEN 'NULL'
WHEN SUBSTR ('12345678', 3, 2 ) = '01'||'O2'||'03' THEN '1T'
WHEN SUBSTR ('12345678', 3, 2 ) = '04'||'O5'||'06' THEN '2T'
WHEN SUBSTR ('12345678', 3, 2 ) = '07'||'O8'||'09' THEN '3T'
WHEN SUBSTR ('12345678', 3, 2 ) = '10'||'11'||'12' THEN '4T'
ELSE "No Data Provided"
END as 'REFTRIM'
FROM Declaration AS DECL
答案 0 :(得分:0)
select MOIS,
Rattachement_Date_Debut,
CASE SUBSTR (Rattachement_Date_Debut,3,2)
WHEN '01' THEN '1T'
WHEN '02' THEN '1T'
WHEN '03' THEN '1T'
WHEN '04' THEN '2T'
WHEN '05' THEN '2T'
WHEN '06' THEN '2T'
WHEN '07' THEN '3T'
WHEN '08' THEN '3T'
WHEN '09' THEN '3T'
WHEN '10' THEN '4T'
WHEN '11' THEN '4T'
WHEN '12' THEN '4T'
ELSE 'No Data Provided'
END as REFTRIM
from DECLARATION;
或者:
select MOIS,
Rattachement_Date_Debut,
CASE
WHEN SUBSTR(Rattachement_Date_Debut, 3, 2) IN ('01','02','03') THEN '1T'
WHEN SUBSTR(Rattachement_Date_Debut, 3, 2) IN ('04','05','06') THEN '2T'
WHEN SUBSTR(Rattachement_Date_Debut, 3, 2) IN ('07','08','09') THEN '3T'
WHEN SUBSTR(Rattachement_Date_Debut, 3, 2) IN ('10','11','12') THEN '4T'
ELSE 'No Data Provided'
END as REFTRIM
from DECLARATION;
测试用例:
create database Benouille;
create or replace table DECLARATION (
MOIS VARCHAR(15),
Rattachement_Date_Debut VARCHAR(15)
);
INSERT into DECLARATION (MOIS, Rattachement_Date_Debut)
values
('janvier', '01012021'),
('février', '01022021'),
('mars', '01032021'),
('avril', '01042021'),
('mai', '01052021'),
('juin', '01062021'),
('juillet', '01072021'),
('août', '01082021'),
('septembre', '01092021'),
('octobre', '01102021' ),
('novembre', '01112021'),
('décembre', '01122021'),
('mal', '00002021');
答案 1 :(得分:0)
非常感谢, 我发现这个更有效,因为您只使用一次 SUBSTR :
SUBSTR(Base.Rattachement_Date_Debut, 3, 2) AS MOIS_DATE_DEB_RATTACH,
CASE
WHEN MOIS_DATE_DEB_RATTACH IN ('01','02','03') THEN '1T'
WHEN MOIS_DATE_DEB_RATTACH IN ('04','05','06') THEN '2T'
WHEN MOIS_DATE_DEB_RATTACH IN ('07','08','09') THEN '3T'
WHEN MOIS_DATE_DEB_RATTACH IN ('10','11','12') THEN '4T'
END AS "REF_TRIMESTRE_ANNEE",