簡體   English   中英

SELECT 聲明雪花中的案例聲明

[英]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.

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