请高手指点下SQL
我要更新一个表的
update wg_zb_yw set 一至四月发展=(select count(case when
a.create_date > = to_date ( '2007-01-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss ')
and a.create_date < = to_date ( '2007-04-30 23:59:59 ', 'yyyy-mm-dd hh24:mi:ss ') then b.user_id end)),
本月发展=(select count(case when
a.create_date > = to_date ( '2007-05-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss ')
and a.create_date < = to_date ( '2007-05-31 23:59:59 ', 'yyyy-mm-dd hh24:mi:ss ') then b.user_id end)),
本周发展=
(select count(case when
a.create_date > = to_date ( '2007-05-26 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss ')
and a.create_date < = to_date ( '2007-05-31 23:59:59 ', 'yyyy-mm-dd hh24:mi:ss ') then b.user_id end))
from v_tba_ask_list a,v_tcm_user b
where a.sequ = '0 ' and (a.serv_no like '1% ' or a.serv_no = '4J128 ' or a.serv_no = '4J129 ')
and b.prod_no in( 'JP1003 ', 'JP1011 ')
and b.prod_type in( 'JP1003-011 ', 'JP1003-012 ', 'JP1011-008 ', 'JP1011-009 ', 'JP1003-004 ', 'JP1011-002 ')
and a.num = b.num AND A.STATE <> '6 '
and b.user_seq = '0 ' and b.state = '1 ' and b.user_state = '1 '
and b.prod_type in( 'JP1003-004 ', 'JP1011-002)
为何我只能一个字段一个字段更新就不会报错,如果三个字段同时更新 就会在更新的第二个字段前报 “未找到预期FROM ”.
谢谢大家了 在线等
------解决方案--------------------你每个select 里面都要写from ,不能写在最后
一至四月发展=(select count(case when
a.create_date > = to_date ( '2007-01-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss ')
and a.create_date < = to_date ( '2007-04-30 23:59:59 ', 'yyyy-mm-dd hh24:mi:ss ') then b.user_id end)),
你这样写的话,都要写from
如果你条件都一样的话,象下面那样写
update tabel
set (字段1,字段2...)=
(select 字段1,字段2... from tabel2)//必须是字查询
------解决方案--------------------楼上说的
update tabel
set (字段1,字段2...)=
(select 字段1,字段2... from tabel2)//必须是字查询
试了一下,当select 字段1,字段2... from tabel2只返回一条记录时,可以实现。看楼主的意思,用count()应该没有问题。
一起学习:)
------解决方案--------------------UPDATE wg_zb_yw
SET (一至四月发展, 本月发展, 本周发展) =
(SELECT
SUM(CASE WHEN a.create_date > = to_date( '2007-01-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss ') AND a.create_date < = to_date( '2007-04-30 23:59:59 ', 'yyyy-mm-dd hh24:mi:ss ') THEN 1 ELSE 0 END),
SUM(CASE WHEN a.create_date > = to_date( '2007-05-01 00:00:00 ', 'yyyy-mm-dd hh24:mi:ss ') AND a.create_date < = to_date( '2007-05-31 23:59:59 ', 'yyyy-mm-dd hh2