Sql 如何向结果数据中添加字母
当我运行以下查询时Sql 如何向结果数据中添加字母,sql,oracle,Sql,Oracle,当我运行以下查询时 select NVL(week, 'SUM) week , sum(A) AS A, sum(B) AS B from ( select b.* from TABLE b where b.week between '2013051' and '2013052' ) group by ROLLUP(WEEK) 我得到的数据如下 | WEEK | 2013051 2013052 但我希望数据命名如下
select
NVL(week, 'SUM) week
, sum(A) AS A, sum(B) AS B
from
(
select b.*
from TABLE b
where b.week between '2013051' and '2013052'
)
group by ROLLUP(WEEK)
我得到的数据如下
| WEEK |
2013051
2013052
但我希望数据命名如下
| WEEK |
2013. 05. 1 WEEK
2013. 05. 2 WEEK
有人能帮我解决这个问题吗?假设
week
是一个字符串:
select substr(week, 1, 4)
||'. '|| substr(week, 5, 2)
||'. '|| substr(week, 7, 1) ||' WEEK' as week,
...
或者,如果week
可以为空(由于子查询的筛选,它无法从数据中获得空值,但您从汇总中得到一个生成的空值,我最初忽略了该值):
);还有一个,在这里似乎是多余的。假设week
是一个字符串:
select substr(week, 1, 4)
||'. '|| substr(week, 5, 2)
||'. '|| substr(week, 7, 1) ||' WEEK' as week,
...
或者,如果week
可以为空(由于子查询的筛选,它无法从数据中获得空值,但您从汇总中得到一个生成的空值,我最初忽略了该值):
);还有一个,在这里似乎是多余的。如果您的Oracle RDBMS版本是10g或更高版本,则该函数还可用于自定义字符串格式:
select regexp_replace(
week, -- if week is of varchar2 datatype or to_char(week) if it's of number datatype
'^([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{1})$', '\1. \2. \3 WEEK'
)
from your_table_name_or_subquery
结果:
WEEK
------------------
2013. 05. 1 WEEK
2013. 05. 2 WEEK
如果您的Oracle RDBMS版本为10g或更高版本,则该函数还可用于执行自定义字符串格式设置:
select regexp_replace(
week, -- if week is of varchar2 datatype or to_char(week) if it's of number datatype
'^([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{1})$', '\1. \2. \3 WEEK'
)
from your_table_name_or_subquery
结果:
WEEK
------------------
2013. 05. 1 WEEK
2013. 05. 2 WEEK
您不需要在所有问题的标题中添加
;无论如何,你都在用[SQL]标记它们,所以这只是噪音,使标题更难阅读。你不需要在所有问题的标题中添加
;不管怎么说,你都在用[SQL]标记它们,所以这只是噪音,使标题更难阅读。