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时不起作用