www.jbmf.net > orAClE 行转列

orAClE 行转列

如果“站名”、“条码”、“时间”都是一样的话,可以这么写:witht_temp as (select row_number() over (partition by station_name order by param_name asc) id, t.* from t),t_temp1 as (select * from t_temp where id = 1),t_temp2 as (select * from

select PKL_num as "姓名",sze_seq as "课程" , sze_val as "分数" from em.pkldtld where pkl_num='PL11030005' and lin_seq=1select pkl_num as 学号,max(decode(sze_seq, 1, sze_val)) as 语文,max(decode(sze_seq, 2, sze_val)) as

需要oracle 8i以上的版本,可以实现类似sql server的返回结果集(就是table)的函数.需要参考的oracle资料: 索引表,table函数, pipelined.依次去网上搜索,会得到你要的答案.如果再不行,我可以给你sample.

select date,col1 union allselect date,col2 union allselect date,col3 union allselect date,col4 union allselect date,col5 union allselect date,col6另外这个是列转行, 行转列用case when函数实现

oracle 测试通过Select std, Case When std=1 Then Min(f1) Else Max(f1)End f1,Max(f2) f2,Case When std=1 Then Max(f1) Else Min(f1) End f3,Min(f2) f4 From table1 Group By std

用case 这个我们学过的 我在网吧 试不了 不敢保证对 不过应该没问题把 表数据 列1 列2 列3 138079100001 a 1 138079100001 b 2 138079100001 c 3 138079100002 a 4 138079100002 b 5 SELECT 列1,MAX(CASE 列2 WHEN a THEN 列3 END), MAX(CASE 列2 WHEN b THEN 列3 END),MAX(CASE 列2 WHEN c THEN 列3 END) from 表 group by 列1

推荐用WM_CONCAT函数SELECT A.STD, WM_CONCAT(A.F3) NEW_RESULFROM (SELECT STD, F3FROM (SELECT STD, F1 F3FROM TABLE_AUNION ALLSELECT STD, F2 F3 FROM TABLE_A) A) AGROUP BY A.STD

行转列的准则就是通过主键进行分组,之后对行其它字段加上SUM()、MAX()、count()函数,里边用decode()这类函数进行处理,总之分组不要用到他就成.

行转列的准则就是通过主键进行分组,之后对行其它字段加上sum()、max()、count()函数,里边用decode()这类函数进行处理,总之分组不要用到他就成.

1、简单方案 --各字段分别查询,然后使用UNIONSELECT idFROM table1UNIONSELECT text1FROM table12、高级方案 -- 使用UNPIVOT

网站地图

All rights reserved Powered by www.jbmf.net

copyright ©right 2010-2021。
www.jbmf.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com