读书人

以上SQL插入语句哪里出错?请高手解答

发布时间: 2012-12-17 09:31:40 作者: rapoo

以下SQL插入语句哪里出错?请高手解答

以上为执行语句后截图
建了以下两个表
CREATE TABLE dgclientdata(id NUMBER(7) CONSTRAINT table_id_nn NOT NULL,date_time VARCHAR2(40),client_mac VARCHAR2(15),adver_id VARCHAR2(15),CONSTRAINT table_pk PRIMARY KEY (date_time,client_mac,adver_id));
CREATE TABLE countend(mdate VARCHAR2(15), adver_id VARCHAR2(15), clicks NUMBER(7),CONSTRAINT countend_pk PRIMARY KEY (mdate,adver_id));
表中有数据,现执行
插入语句:
INSERT INTO countend select date_time,adver_id,count(*) from dgclientdata group by adver_id having date_time=to_char(sysdate-1);
这条插入语句哪里出错?

[最优解释]

引用:
请问4楼:您这种方法运行后结果如上图。表countend有约束条件的哦
CONSTRAINT countend_pk PRIMARY KEY (mdate,adver_id));
如果去掉约束条件的话:会有如下结果:

要求adver_id和mdate组合只能出现一次


INSERT INTO countend select distinct date_time,adver_id,count(*) over ( partition by adver_id) from dgclientdatawhere date_time=to_char(sysdate-1);
加一个distinct就好
[其他解释]
INSERT INTO countend 
select date_time,adver_id,count(*) over ( partition by adver_id)
from dgclientdata
where date_time=to_char(sysdate-1);

[其他解释]
group by 错误,select data_time,adver_id,count(*) from dgcclientdate group by adver_id;这句sql错误,以adver_id分组,只能查询adver_id 和聚合函数。即:select adver_id,count(*) from dgcclientdate group by adver_id,去掉data_time
[其他解释]
引用:
group by 错误,select data_time,adver_id,count(*) from dgcclientdate group by adver_id;这句sql错误,以adver_id分组,只能查询adver_id 和聚合函数。即:select adver_id,count(*) from dgcclientdate group by adver_id,……


顶下
[其他解释]
但是表countend中字段mdate不能为空的哦,且要插入是的sysdate-1这个结果。该如何同时插入这三个字段呢?
[其他解释]
请问4楼:您这种方法运行后结果如上图。表countend有约束条件的哦
CONSTRAINT countend_pk PRIMARY KEY (mdate,adver_id));
如果去掉约束条件的话:会有如下结果:

要求adver_id和mdate组合只能出现一次
[其他解释]
不好意思,刚才的两张截图应该交换一下位置 ^_^
[其他解释]
INSERT INTO countend select date_time,adver_id,count(adver_id) from dgclientdata group by adver_id having date_time=to_char(sysdate-1);

[其他解释]
7楼的:您好个方法和我开始的方法基本没变嘛。还是这个错误丫

[其他解释]
谢谢各位!特别感谢yinan9!完整解决了问题。哈哈

读书人网 >oracle

热点推荐