如何查询oracle数据库一周的数据
oracle查询一周的数据怎么在jsp里面显示这一周数据每天的数据例如:selectname,timestutrsfromtablewheretime>=to-date(...
oracle查询一周的数据怎么在jsp里面显示这一周数据每天的数据
例如: select name,time stutrs from table where time>=to-date('2012-07-16','yyyy-mm-dd') and time<=to-date('2012-07-20','yyyy-mm-dd')
查询结果为:
北大街 2012-07-16 70
北大街 2012-07-17 80
北大街 2012-07-18 98
北大街 2012-07-19 43
北大街 2012-07-20 56
在jsp页面显示
名称 07-16 07-17 07-18 07-19 07-20
北大街 70 80 98 43 56
亲各位大侠帮忙 展开
例如: select name,time stutrs from table where time>=to-date('2012-07-16','yyyy-mm-dd') and time<=to-date('2012-07-20','yyyy-mm-dd')
查询结果为:
北大街 2012-07-16 70
北大街 2012-07-17 80
北大街 2012-07-18 98
北大街 2012-07-19 43
北大街 2012-07-20 56
在jsp页面显示
名称 07-16 07-17 07-18 07-19 07-20
北大街 70 80 98 43 56
亲各位大侠帮忙 展开
展开全部
参考 oracle11g行变列两种办法的比较:
方法1:优点是分析函数,缺点:返回log,低效,
select link_pid, replace(strs,',','|') all_forms
from
(select t.link_pid,
wmsys.wm_concat(t.form_of_way)
over(partition by t.link_pid order by t.form_of_way ) strs,
row_number() over(partition by t.link_pid order by t.form_of_way) RN,
count(1) over(partition by t.link_pid ) CNT
from rd_link_form t
) where RN=CNT
方法2:优点是高效,返回char,缺点:不是分析函数
select t.link_pid,
listagg(t.form_of_way, '|')
within group (order by t.form_of_way ) all_forms
from rd_link_form t
group by t.link_pid
listagg()需在11.2版本下才行
两种方法的比较:依link_pid去重后有23万的数据量,方法1的wmsys.wm_concat用3小时看不到结果,方法2的listagg用80秒看到结果
【我以字典表user_tab_columns改写了上述SQL,如下,大家直接执行就行:】
方法1:
select table_name, replace(strs, ',', '|') all_forms
from (select t.table_name,
wmsys.wm_concat(t.COLUMN_NAME) over(partition by t.table_name order by t.COLUMN_NAME) strs,
row_number() over(partition by t.table_name order by t.COLUMN_NAME) RN,
count(1) over(partition by t.table_name) CNT
from user_tab_columns t)
where RN = CNT
方法2:
select t.table_name,
listagg(t.COLUMN_NAME, '|')
within group (order by t.COLUMN_NAME ) all_forms
from user_tab_columns t
group by t.table_name
大家可以直接在自己的pl/sql中运行上述SQL
方法1:优点是分析函数,缺点:返回log,低效,
select link_pid, replace(strs,',','|') all_forms
from
(select t.link_pid,
wmsys.wm_concat(t.form_of_way)
over(partition by t.link_pid order by t.form_of_way ) strs,
row_number() over(partition by t.link_pid order by t.form_of_way) RN,
count(1) over(partition by t.link_pid ) CNT
from rd_link_form t
) where RN=CNT
方法2:优点是高效,返回char,缺点:不是分析函数
select t.link_pid,
listagg(t.form_of_way, '|')
within group (order by t.form_of_way ) all_forms
from rd_link_form t
group by t.link_pid
listagg()需在11.2版本下才行
两种方法的比较:依link_pid去重后有23万的数据量,方法1的wmsys.wm_concat用3小时看不到结果,方法2的listagg用80秒看到结果
【我以字典表user_tab_columns改写了上述SQL,如下,大家直接执行就行:】
方法1:
select table_name, replace(strs, ',', '|') all_forms
from (select t.table_name,
wmsys.wm_concat(t.COLUMN_NAME) over(partition by t.table_name order by t.COLUMN_NAME) strs,
row_number() over(partition by t.table_name order by t.COLUMN_NAME) RN,
count(1) over(partition by t.table_name) CNT
from user_tab_columns t)
where RN = CNT
方法2:
select t.table_name,
listagg(t.COLUMN_NAME, '|')
within group (order by t.COLUMN_NAME ) all_forms
from user_tab_columns t
group by t.table_name
大家可以直接在自己的pl/sql中运行上述SQL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不需要通过sql实现,
你通过jsp循环,把结果集中的数据行转列显示在页面 就可以了%
你通过jsp循环,把结果集中的数据行转列显示在页面 就可以了%
追问
能给个例子吗
追答
这个,很容易啊,你获取了结果集后,
对结果集进行循环,第一行,作为html的table第一列,第二行作为html的table第二列,很容易啊。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就进行两次数据遍历输出,第一次遍历时输出日期,第二次遍历时输出值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你自己在jsp页面上处理一下时间撒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询