3,497
社区成员
发帖
与我相关
我的任务
分享
( SELECT TO_CHAR (lot.MAT_DATE, 'YYYY-MM-DD') AS MatDati,
SUM (lot.QTY) AS DatiQty
FROM MM_LOT lot
GROUP BY TO_CHAR (lot.MAT_DATE, 'YYYY-MM-DD')) lots
将这句话修改成下面这样
( SELECT lot.MAT_DATE AS MatDati,
SUM (lot.QTY) AS DatiQty
FROM MM_LOT lot
GROUP BY lot.MAT_DATE) lots
那么生成的视图中对应字段确实就变成了 NOT NULL
也就是说本来非空的lot.MAT_DATE经过TO_CHAR函数的运算就被识别为可空字段~
所以现在感觉还是不修改已有字段,而是新建一个非空新字段更可行些,只是暂时仍不知该如何新建一个非空新字段,不过已知用Rownum是无效的
SQL> create table t1(c1 int not null, c2 varchar(10) not null, c3 varchar(10) );
create view v1
as
select 100 id, c1, c2, c3
from (select c2, sum(c1) c1, max(c3) c3 from t1 group by c2) ;
desc v1;
drop view v1;
drop table t1;
Table created.
SQL> SQL> 2 3 4
View created.
SQL> SQL> Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
C1 NUMBER
C2 NOT NULL VARCHAR2(10)
C3 VARCHAR2(10)
SQL> SQL>
View dropped.
SQL>
Table dropped.
SQL>