[英]CASE STATEMENT WITHIN A SELECT STATEMENT SNOWFLAKE
我正在尝试在 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
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');
非常感谢,我发现这个更有效,因为您只使用 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",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.