oracle中如何用sql让两列显示为一列

时间:2022-07-03 10:32:15
如下:
活动名称                                 学期          起始时间    结束时间                 体系指标
张小猫骨干任职考评 2014-2015-2      2015/6/1  2015/8/31 张小猫骨干任职考评

结果显示为:
活动名称                                 学期                         起止日期                                                     体系指标
张小猫骨干任职考评 2014-2015-2          2015-06-01 至 2015-08-31                  张小猫骨干任职考评

注:日期都是date型

8 个解决方案

#1


select  活动名称列 , 学期列 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  from table

#2


引用 1 楼 ghx287524027 的回复:
select  活动名称列 , 学期列 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  from table


非常感谢!已经成功了

那如何把学期这一列2014-2015-2变成2015春显示呢?

#3


如果2014-2015-2的格式固定的话,那就用substr()||‘春’,至于春、秋的显示,可以用case when 根据2014-2015-2显示

#4


引用 3 楼 ghx287524027 的回复:
如果2014-2015-2的格式固定的话,那就用substr()||‘春’,至于春、秋的显示,可以用case when 根据2014-2015-2显示


这个感觉有点难得,没明白你的意思,试了半天都不行

#5


引用 4 楼 sinat_34367943 的回复:
Quote: 引用 3 楼 ghx287524027 的回复:

如果2014-2015-2的格式固定的话,那就用substr()||‘春’,至于春、秋的显示,可以用case when 根据2014-2015-2显示


这个感觉有点难得,没明白你的意思,试了半天都不行

select  活动名称列 , substr(学期列,6,4)||'春' as 学期 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  
from table

#6


其实你需求没有描述清楚,既然有“2015春”,那么肯定会有显示“2015秋”的时候,这个种情况的划分你没有说清楚……所以写出来的语句没有通用性

#7



select  活动名称列 , substr(学期列,6,4)||'春' as 学期 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  
from table

这里面的substr(学期列,6,4)||'春' as 学期 的6,4是什么呢?

#8


Quote: 引用 6 楼 ghx287524027 的回复:


明白了,是直接截取的字符串,然后拼接、

#1


select  活动名称列 , 学期列 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  from table

#2


引用 1 楼 ghx287524027 的回复:
select  活动名称列 , 学期列 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  from table


非常感谢!已经成功了

那如何把学期这一列2014-2015-2变成2015春显示呢?

#3


如果2014-2015-2的格式固定的话,那就用substr()||‘春’,至于春、秋的显示,可以用case when 根据2014-2015-2显示

#4


引用 3 楼 ghx287524027 的回复:
如果2014-2015-2的格式固定的话,那就用substr()||‘春’,至于春、秋的显示,可以用case when 根据2014-2015-2显示


这个感觉有点难得,没明白你的意思,试了半天都不行

#5


引用 4 楼 sinat_34367943 的回复:
Quote: 引用 3 楼 ghx287524027 的回复:

如果2014-2015-2的格式固定的话,那就用substr()||‘春’,至于春、秋的显示,可以用case when 根据2014-2015-2显示


这个感觉有点难得,没明白你的意思,试了半天都不行

select  活动名称列 , substr(学期列,6,4)||'春' as 学期 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  
from table

#6


其实你需求没有描述清楚,既然有“2015春”,那么肯定会有显示“2015秋”的时候,这个种情况的划分你没有说清楚……所以写出来的语句没有通用性

#7



select  活动名称列 , substr(学期列,6,4)||'春' as 学期 , to_char(起始时间列 , 'yyyy-mm-dd') ||‘ 至 ’||to_char(结束时间列 , 'yyyy-mm-dd') as 起止时间 , 体系指标列  
from table

这里面的substr(学期列,6,4)||'春' as 学期 的6,4是什么呢?

#8


Quote: 引用 6 楼 ghx287524027 的回复:


明白了,是直接截取的字符串,然后拼接、