任何人都可以帮助我。我试图从一个表中取出日期并将其插入到另一个表中,然后根据日期,如果它是周末或工作日也插入该字符串。我已经能够单独做到这一点,所以试图一举一动地把我的表达结合起来,现在我得到了臭名昭着的“缺少右括号。”
这是我的块:
INSERT INTO time (sale_day, date_type)
SELECT sd, dt
FROM (
SELECT sale_date AS sd,(
case
when dy IS null or dy='' then 'Date Missing'
when dy='SAT' then 'Weekend'
when dy='SUN' then 'Weekend'
else 'Weekday' END) as date_type
FROM (SELECT TO_CHAR((sale_date), 'DY') AS dy FROM sales) AS dt
FROM sales
);
提前致谢!
答案 0 :(得分:1)
您的查询过于复杂。不需要嵌套三个选择级别。
INSERT INTO time (sale_day, date_type)
SELECT sale_date AS sd,
case
when sale_date IS null then 'Date Missing'
when TO_CHAR(sale_date, 'DY') in ('SAT', 'SUN') then 'Weekend'
else 'Weekday'
END as date_type
FROM sales;
不相关,但是:为什么要将这些数据复制到新表中?查询非常简单,如果您刚刚为该信息创建了一个视图,那么它将更有效:
create or replace view time
as
SELECT sale_date AS sd,
case
when sale_date IS null then 'Date Missing'
when TO_CHAR(sale_date, 'DY') in ('SAT', 'SUN') then 'Weekend'
else 'Weekday'
END as date_type
FROM sales;
这样time
中的信息始终是最新的,无需复制数据。