ORACLE 语句 怎么加一列 10C

select * from
(select t.lsh,t.sqrid,t.sqrmc,t.sqbmid,t.sqbmmc,t.processinstid,t.lxfs,t.ym,
wf.endtime,
(case t.syqx
when '1' then to_char((SELECT add_months(wf.endtime,6) months from dual),'yyyy-mm-dd HH24:mi')
when '2' then to_char((SELECT add_months(wf.endtime,12) months from dual),'yyyy-mm-dd HH24:mi')
--else '-1'
end ) dqsj
from t_jbhf_ymsq t,
wfprocessinst wf
where t.processinstid= wf.processinstid

) m
where m.dqsj > '2018-06-20 17:44'
and
(case
when m.dqsj>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1'
when m.dqsj<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2'
end )='1'

图片说明
如图,我需要在查询出来的展示列里在加一列,这个列就是最外边where条件后的case when 的结果,现在他的值作为判断等于1了,能起别名什么的也行,只要能出来一列就行,怎么做?

8个回答

select m.*,
(case 
when m.dqsj>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1' 
when m.dqsj<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2' 
end) value 
from
(select t.lsh,t.sqrid,t.sqrmc,t.sqbmid,t.sqbmmc,t.processinstid,t.lxfs,t.ym,
wf.endtime, 
(case t.syqx
when '1' then to_char((SELECT add_months(wf.endtime,6) months from dual),'yyyy-mm-dd HH24:mi') 
when '2' then to_char((SELECT add_months(wf.endtime,12) months from dual),'yyyy-mm-dd HH24:mi')
--else '-1'
end ) dqsj
from t_jbhf_ymsq t,
wfprocessinst wf 
where t.processinstid= wf.processinstid

) m 
where m.dqsj > '2018-06-20 17:44'
and 
(case 
when m.dqsj>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1' 
when m.dqsj<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2' 
end )='1' 
qq_42238868
qq_42238868 行列互换的方式
一年多之前 回复
xyt3198
xyt3198 回复Lzjshiqi: 上面的sql是已经改好的了,直接执行试试
一年多之前 回复
xyt3198
xyt3198 回复Lzjshiqi: 可以了吗?
一年多之前 回复
Lzjshiqi
Lzjshiqi value
一年多之前 回复
Lzjshiqi
Lzjshiqi 随便加
一年多之前 回复
xyt3198
xyt3198 value这一列就是了
一年多之前 回复

select * from
(select t.lsh,t.sqrid,t.sqrmc,t.sqbmid,t.sqbmmc,t.processinstid,t.lxfs,t.ym,
wf.endtime,
(case t.syqx
when '1' then to_char((SELECT add_months(wf.endtime,6) months from dual),'yyyy-mm-dd HH24:mi')
when '2' then to_char((SELECT add_months(wf.endtime,12) months from dual),'yyyy-mm-dd HH24:mi')
end ) dqsj,
(case
when (case t.syqx
when '1' then to_char((SELECT add_months(wf.endtime,6) months from dual),'yyyy-mm-dd HH24:mi')
when '2' then to_char((SELECT add_months(wf.endtime,12) months from dual),'yyyy-mm-dd HH24:mi')
end )>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1'
when (case t.syqx
when '1' then to_char((SELECT add_months(wf.endtime,6) months from dual),'yyyy-mm-dd HH24:mi')
when '2' then to_char((SELECT add_months(wf.endtime,12) months from dual),'yyyy-mm-dd HH24:mi')
end )<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2'
end ) nowdate1,
from t_jbhf_ymsq t,
wfprocessinst wf
where t.processinstid= wf.processinstid

) m
where m.dqsj > '2018-06-20 17:44'
and
(case
when m.dqsj>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1'
when m.dqsj<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2'
end )='1'

你看一下行列互换的方式就知道了

实在不行可以直接用鼠标操作啊 直接点表 然后修改表 试试

列名用常量,然后增加一个别名

alter可以修改表的属性

图形化管理工具就可以了啊

在第一个select 里面加上条件后面的case when 设置一个别名做为列输出。
select (case
when m.dqsj>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1'
when m.dqsj<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2'
end ) m_values,m.*
from
(select t.lsh,t.sqrid,t.sqrmc,t.sqbmid,t.sqbmmc,t.processinstid,t.lxfs,t.ym,
wf.endtime,
(case t.syqx
when '1' then to_char((SELECT add_months(wf.endtime,6) months from dual),'yyyy-mm-dd HH24:mi')
when '2' then to_char((SELECT add_months(wf.endtime,12) months from dual),'yyyy-mm-dd HH24:mi')
--else '-1'
end ) dqsj
from t_jbhf_ymsq t,
wfprocessinst wf
where t.processinstid= wf.processinstid

) m
where m.dqsj > '2018-06-20 17:44'
and
(case
when m.dqsj>to_char(sysdate,'yyyy-mm-dd HH24:mi') then '1'
when m.dqsj<=to_char(sysdate,'yyyy-mm-dd HH24:mi') then '2'
end )='1'

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!