[英]CONCAT within SQL CASE Statement in Snowflake
我正在嘗試將列 REVENUE_MONTH 中的數據轉換為例如 03 而不是 3。我還將將該新列與現有的 REVENUE_MONTH 和 REVENUE_YEAR 列連接起來以獲得類似 2020-03-01 而不是 2020-3- 01. 以下是我的兩種方法,
CONCAT(REVENUE_YEAR,'-',CAST(CASE WHEN REVENUE_MONTH IN (1,2,3,4,5,6,7,8,9) THEN CONCAT(0,REVENUE_MONTH) ELSE REVENUE_MONTH END AS NUMBER(38,0)),'-','01')
CONCAT(REVENUE_YEAR,'-',CAST(CASE WHEN LENGTH(REVENUE_MONTH)=1 THEN CONCAT(0,REVENUE_MONTH) ELSE REVENUE_MONTH END AS NUMBER(38,0)),'-','01')
不幸的是,他們倆都返回 2020-3-01 而不是預期的 2020-03-01
你試過 LPAD 嗎? 下面應該工作
CONCAT(REVENUE_YEAR,'-', LPAD(REVENUE_MONTH,2,'0'),'-','01')
SELECT column1, RIGHT('0' || CAST(column1 AS varchar(2)), 2) as month
FROM VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)
ORDER BY 1;
給出:
COLUMN1 MONTH
1 01
2 02
3 03
4 04
5 05
6 06
7 07
8 08
9 09
10 10
11 11
12 12
但也可以是:
SELECT column1, RIGHT('0' || column1::text, 2) as month
FROM VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)
ORDER BY 1;
但你真正想要的是LPAD
SELECT column1, LPAD( column1, 2, '0') as month
FROM VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)
ORDER BY 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.