问题描述
我一直试图弄清楚如何用这段代码创建一个表,但无法弄清楚。非常感谢您的回答。
WITH
dat_param AS (SELECT SYSDATE AS dat FROM dual)
SELECT
LEVEL AS day_year,Trunc((SELECT dat FROM dat_param),'YYYY')+LEVEL-1 AS date_year,TO_CHAR(Trunc((SELECT dat FROM dat_param),'YYYY')+LEVEL-1,'YYYY-MM') AS part_year,TO_NUMBER(TO_CHAR(Trunc((SELECT dat FROM dat_param),'D')) AS day_week
FROM dual
CONNECT BY LEVEL <= ADD_MONTHS(Trunc((SELECT dat FROM dat_param),'YEAR'),12)-Trunc((SELECT dat FROM dat_param),'YEAR')
解决方法
假设您使用的是 Oracle,则可以使用 CREATE TABLE AS
:
CREATE TABLE t as
WITH
dat_param AS (SELECT SYSDATE AS dat FROM dual)
SELECT
LEVEL AS day_year,TRUNC((SELECT dat FROM dat_param),'YYYY')+LEVEL-1 AS date_year,TO_CHAR(TRUNC((SELECT dat FROM dat_param),'YYYY')+LEVEL-1,'YYYY-MM') AS part_year,TO_NUMBER(TO_CHAR(TRUNC((SELECT dat FROM dat_param),'D')) AS day_week
FROM dual
CONNECT BY LEVEL <= ADD_MONTHS(TRUNC((SELECT dat FROM dat_param),'YEAR'),12)-TRUNC((SELECT dat FROM dat_param),'YEAR');
Here 是一个 dbfiddle。