有关于查询的问题

悬崖跳舞被人砍 2014-12-20 10:18:11
我有一表,数据示例如下:

每一条数据都是按照插入时间的先后依次显示的,现想实现下面的查询结果:

请问如何用语句实现
...全文
166 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 bw555 的回复:
简化了下
SQL> WITH T AS(
  2  SELECT '01' COL1,'aa1' col2,null col3,null col4 from dual union all
  3  SELECT '01' COL1,null col2,'bb1' col3,null col4 from dual union all
  4  SELECT '01' COL1,null col2,null col3,'cc1' col4 from dual union all
  5  SELECT '01' COL1,null col2,'bb2' col3,null col4 from dual union all
  6  SELECT '02' COL1,'AA1' col2,'BB1' col3,null col4 from dual union all
  7  SELECT '02' COL1,NULL col2,null col3,'CC1' col4 from dual
  8  )
  9  SELECT COL1,
 10  MAX(COL2)KEEP(DENSE_RANK LAST ORDER BY COL2 NULLS FIRST,ROWNUM) COL2,
 11  MAX(COL3)KEEP(DENSE_RANK LAST ORDER BY COL3 NULLS FIRST,ROWNUM) COL3,
 12  MAX(COL4)KEEP(DENSE_RANK LAST ORDER BY COL4 NULLS FIRST,ROWNUM) COL4
 13  FROM T
 14  GROUP BY COL1;

CO COL COL COL
-- --- --- ---
01 aa1 bb2 cc1
02 AA1 BB1 CC1

SQL>
我错了斑竹 还没看清楚你的回答就答复你了`
  • 打赏
  • 举报
回复
引用 3 楼 bw555 的回复:
简化了下
SQL> WITH T AS(
  2  SELECT '01' COL1,'aa1' col2,null col3,null col4 from dual union all
  3  SELECT '01' COL1,null col2,'bb1' col3,null col4 from dual union all
  4  SELECT '01' COL1,null col2,null col3,'cc1' col4 from dual union all
  5  SELECT '01' COL1,null col2,'bb2' col3,null col4 from dual union all
  6  SELECT '02' COL1,'AA1' col2,'BB1' col3,null col4 from dual union all
  7  SELECT '02' COL1,NULL col2,null col3,'CC1' col4 from dual
  8  )
  9  SELECT COL1,
 10  MAX(COL2)KEEP(DENSE_RANK LAST ORDER BY COL2 NULLS FIRST,ROWNUM) COL2,
 11  MAX(COL3)KEEP(DENSE_RANK LAST ORDER BY COL3 NULLS FIRST,ROWNUM) COL3,
 12  MAX(COL4)KEEP(DENSE_RANK LAST ORDER BY COL4 NULLS FIRST,ROWNUM) COL4
 13  FROM T
 14  GROUP BY COL1;

CO COL COL COL
-- --- --- ---
01 aa1 bb2 cc1
02 AA1 BB1 CC1

SQL>
怪我没有表述清楚,其实数据不只是这么几条记录的,像我贴图贴出来的数据很多的,这样一条一条写是不行的~
bw555 2014-12-20
  • 打赏
  • 举报
回复
简化了下
SQL> WITH T AS(
  2  SELECT '01' COL1,'aa1' col2,null col3,null col4 from dual union all
  3  SELECT '01' COL1,null col2,'bb1' col3,null col4 from dual union all
  4  SELECT '01' COL1,null col2,null col3,'cc1' col4 from dual union all
  5  SELECT '01' COL1,null col2,'bb2' col3,null col4 from dual union all
  6  SELECT '02' COL1,'AA1' col2,'BB1' col3,null col4 from dual union all
  7  SELECT '02' COL1,NULL col2,null col3,'CC1' col4 from dual
  8  )
  9  SELECT COL1,
 10  MAX(COL2)KEEP(DENSE_RANK LAST ORDER BY COL2 NULLS FIRST,ROWNUM) COL2,
 11  MAX(COL3)KEEP(DENSE_RANK LAST ORDER BY COL3 NULLS FIRST,ROWNUM) COL3,
 12  MAX(COL4)KEEP(DENSE_RANK LAST ORDER BY COL4 NULLS FIRST,ROWNUM) COL4
 13  FROM T
 14  GROUP BY COL1;

CO COL COL COL
-- --- --- ---
01 aa1 bb2 cc1
02 AA1 BB1 CC1

SQL>
bw555 2014-12-20
  • 打赏
  • 举报
回复
SQL> WITH T AS(
  2  SELECT '01' COL1,'aa1' col2,null col3,null col4 from dual union all
  3  SELECT '01' COL1,null col2,'bb1' col3,null col4 from dual union all
  4  SELECT '01' COL1,null col2,null col3,'cc1' col4 from dual union all
  5  SELECT '01' COL1,null col2,'bb2' col3,null col4 from dual union all
  6  SELECT '02' COL1,'AA1' col2,'BB1' col3,null col4 from dual union all
  7  SELECT '02' COL1,NULL col2,null col3,'CC1' col4 from dual
  8  ),T1 AS(
  9  SELECT COL1,MAX(COL2)KEEP(DENSE_RANK LAST ORDER BY ROWNUM) COL2 FROM T
 10  WHERE COL2 IS NOT NULL
 11  GROUP BY COL1
 12  ),T2 AS(
 13  SELECT COL1,MAX(COL3)KEEP(DENSE_RANK LAST ORDER BY ROWNUM) COL3 FROM T
 14  WHERE COL3 IS NOT NULL
 15  GROUP BY COL1
 16  ),T3 AS(
 17  SELECT COL1,MAX(COL4)KEEP(DENSE_RANK LAST ORDER BY ROWNUM) COL4 FROM T
 18  WHERE COL4 IS NOT NULL
 19  GROUP BY COL1
 20  )
 21  select T1.COL1,T1.COL2,T2.COL3,T3.COL4 from T1,T2,T3
 22  WHERE T1.COL1=T2.COL1 AND T1.COL1=T3.COL1;

CO COL COL COL
-- --- --- ---
01 aa1 bb2 cc1
02 AA1 BB1 CC1

SQL>
卖水果的net 2014-12-20
  • 打赏
  • 举报
回复

select col1 , max(col2) , max(col3) , max(col4) 
from mytable
group by col1
  • 打赏
  • 举报
回复
引用 3 楼 bw555 的回复:
简化了下
SQL> WITH T AS(
  2  SELECT '01' COL1,'aa1' col2,null col3,null col4 from dual union all
  3  SELECT '01' COL1,null col2,'bb1' col3,null col4 from dual union all
  4  SELECT '01' COL1,null col2,null col3,'cc1' col4 from dual union all
  5  SELECT '01' COL1,null col2,'bb2' col3,null col4 from dual union all
  6  SELECT '02' COL1,'AA1' col2,'BB1' col3,null col4 from dual union all
  7  SELECT '02' COL1,NULL col2,null col3,'CC1' col4 from dual
  8  )
  9  SELECT COL1,
 10  MAX(COL2)KEEP(DENSE_RANK LAST ORDER BY COL2 NULLS FIRST,ROWNUM) COL2,
 11  MAX(COL3)KEEP(DENSE_RANK LAST ORDER BY COL3 NULLS FIRST,ROWNUM) COL3,
 12  MAX(COL4)KEEP(DENSE_RANK LAST ORDER BY COL4 NULLS FIRST,ROWNUM) COL4
 13  FROM T
 14  GROUP BY COL1;

CO COL COL COL
-- --- --- ---
01 aa1 bb2 cc1
02 AA1 BB1 CC1

SQL>
斑竹,你为啥米这么屌~

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧