Sql 如何使用“CASE”查询创建表?

Sql 如何使用“CASE”查询创建表?,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,当我运行下面的查询时,它工作得很好 Select USER_ID, case when AGECD >= 10 and AGECD <= 19 then 1 when AGECD >= 20 and AGECD <= 24 then 2 when AGECD >= 25 and AGECD <= 29 then 2.5 when AGECD >= 30 and AGECD <= 34 then 3 when AGECD >= 35 and A

当我运行下面的查询时,它工作得很好

Select USER_ID, case
when AGECD >= 10 and AGECD <= 19 then 1
when AGECD >= 20 and AGECD <= 24 then 2
when AGECD >= 25 and AGECD <= 29 then 2.5
when AGECD >= 30 and AGECD <= 34 then 3
when AGECD >= 35 and AGECD <= 39 then 3.5
when AGECD >= 40 and AGECD <= 44 then 4
when AGECD >= 45 and AGECD <= 49 then 4.5
when AGECD >= 50 and AGECD <= 54 then 5
when AGECD >= 55 and AGECD <= 59 then 5.5
when AGECD >= 60 and AGECD <= 69 then 6
when AGECD >= 70 and AGECD <= 100 then 7
else 0
END as AGETYPE
from table_name;
我想用上面的结果创建一个新表

因此,我键入了以下查询:

create table AGETYPE as
    Select USER_ID, case
    when AGECD >= 10 and AGECD <= 19 then 1
    when AGECD >= 20 and AGECD <= 24 then 2
    when AGECD >= 25 and AGECD <= 29 then 2.5
    when AGECD >= 30 and AGECD <= 34 then 3
    when AGECD >= 35 and AGECD <= 39 then 3.5
    when AGECD >= 40 and AGECD <= 44 then 4
    when AGECD >= 45 and AGECD <= 49 then 4.5
    when AGECD >= 50 and AGECD <= 54 then 5
    when AGECD >= 55 and AGECD <= 59 then 5.5
    when AGECD >= 60 and AGECD <= 69 then 6
    when AGECD >= 70 and AGECD <= 100 then 7
    else 0
    END as AGETYPE
    from table_name;
但是,出现错误,并说明原因是指定的数字无效

我使用的是OracleSQLDeveloper,我认为我必须在代码中使用一些适当的“选项卡”,以使其正常工作。如何修复它?

创建表 如选择COMCSNO, case when then else NULL-此处或使用“NULL”
如果要将字符串文字结尾存储为表名中的AGETYPE,则不发布表结构。我猜有些事情你没有说,这会引起一些问题。无论如何,我假设了一些表结构,并在本地进行了尝试

它就像一个符咒!这是:

create table table_name (
  user_id number(6),
  agecd number(6)
);

insert into table_name (user_id, agecd) values (1, 15);
insert into table_name (user_id, agecd) values (2, 16);
insert into table_name (user_id, agecd) values (3, 35);

create table agetype as 
Select USER_ID, case
when AGECD >= 10 and AGECD <= 19 then 1
when AGECD >= 20 and AGECD <= 24 then 2
when AGECD >= 25 and AGECD <= 29 then 2.5
when AGECD >= 30 and AGECD <= 34 then 3
when AGECD >= 35 and AGECD <= 39 then 3.5
when AGECD >= 40 and AGECD <= 44 then 4
when AGECD >= 45 and AGECD <= 49 then 4.5
when AGECD >= 50 and AGECD <= 54 then 5
when AGECD >= 55 and AGECD <= 59 then 5.5
when AGECD >= 60 and AGECD <= 69 then 6
when AGECD >= 70 and AGECD <= 100 then 7
else 0
END as AGETYPE
from table_name;

那么,你的情况有什么不同呢?

为什么我的帖子被否决了?它仍然不起作用。当我试图将上述查询结果保存为csv文件时,仍然会出现错误消息“指定的编号无效”,因此我认为第一次编码没有问题,但“将上述结果创建为表”时出错。AGECD列的数据类型是什么?我猜它是VARCHAR,而不是number,并且此列包含一些无法转换为数字的值。请包括CREATE TABLE。。。语句的DDL。我尝试了它,但在使用相同的错误消息reference link with detail时不起作用