表的格式就是这样的。
ZYH DM 想要的效果是
如果ZYH 号码跟ZYH号码相等则,DM 想后排列。
例如 0000374445 这个号码跟下面的相等 则DM 想后排列
想要的数据是
ZYH DM DM 1
0000374902 50.24001
50.24001 33.231
0000374445 74.3 002 74.1 002
0000376096 41.381 41.2
0000374460 33.231
查询的结果是表格形式的,DM 和DM1是表格的,中间不是逗号分开的。
最后给出SQL代码加上分析 注解 谢谢
ZYH DM 想要的效果是
如果ZYH 号码跟ZYH号码相等则,DM 想后排列。
例如 0000374445 这个号码跟下面的相等 则DM 想后排列
想要的数据是
ZYH DM DM 1
0000374902 50.24001
50.24001 33.231
0000374445 74.3 002 74.1 002
0000376096 41.381 41.2
0000374460 33.231
查询的结果是表格形式的,DM 和DM1是表格的,中间不是逗号分开的。
最后给出SQL代码加上分析 注解 谢谢
解决方案 »
- 表名为T_YYMM,其中YYMM是年月,共几十张表,我如何给这些表都增加一个字段?并更新改字段
- 数据连接问题!!SOS!
- 一道选择题~~~
- 分区表的建立!在线等待
- 使用like谓词是区分大小写的,能否在某个地方配置,使得它不区分大小写?就像sql server里一样不区分多好.
- 如何查找一列下有重复的字段?
- Oracle数据库中可以自动编号吗?
- 对关键字,用Number型快还是Char型快?
- P4, 2000 Server, Oracle 806, 安装过程中报内存错,之后继续安装至结束。结果Oracle Net8 Easy Config不能启动。。。Help , thanks.
- 如何统计表每天写入的数据量(千万级数据量)
- 表链接时的 index
- oracle执行脚本不走索引
WITH t AS (
SELECT 0000374445 zyh, '74.3 002' DM, '2015/2/2' sj FROM dual
UNION
SELECT 0000374445 zyh, '74.1 002' DM, '2015/2/2' sj FROM dual
UNION
SELECT 0000376096 zyh, '41.381' DM, '2015/2/3' sj FROM dual
UNION
SELECT 0000376096 zyh, '41.21' DM, '2015/2/5' sj FROM dual
UNION
SELECT 0000374460 zyh,'33.231' DM, '2015/2/5' sj FROM dual
)
SELECT tt.zyh,
MAX(DECODE(rn,1,dm,NULL)) dm,
MAX(DECODE(rn,2,dm,NULL)) dm1
FROM
(SELECT t.*,
row_number() OVER(PARTITION BY zyh ORDER BY zyh) rn
FROM t) tt
GROUP BY tt.zyh;
select id, num, num1
from (select id,
num,
lead(num, 1, null) over(partition by id order by id) num1
from tlead1) aa
where rowid in (select min(rowid) from tlead1 bb where aa.id = bb.id)
3楼的,你这个虽然是实现的。但是只能去2中情况的
麻烦3楼在给讲解下哈
这个lead 只能取偏移量的也就是说只能取下一个数的
这么循环取完所以的6个了
(SELECT 0000374445 ZYH, '74.3 002' DM, '2015/2/2' SJ
FROM DUAL
UNION
SELECT 0000374445 ZYH, '74.1 002' DM, '2015/2/2' SJ
FROM DUAL
UNION
SELECT 0000376096 ZYH, '41.381' DM, '2015/2/3' SJ
FROM DUAL
UNION
SELECT 0000376096 ZYH, '41.21' DM, '2015/2/5' SJ
FROM DUAL
UNION
SELECT 0000374460 ZYH, '33.231' DM, '2015/2/5' SJ
FROM DUAL)
SELECT ZYH, MAX(DM) AS DM, MIN(DM) AS DM1 FROM T GROUP BY ZYH
offset是偏移几行,随意偏移几行都可以。最大的问题是,难道你确定有多少行重复的?或者说,动态展示的列不知道有多少个?
可能pl/sql能做
FROM(
SELECT ZYH,DM,ROW_NUMBER()OVER(PARTITION BY ZYH ORDER BY ROWNUM) AS RN
FROM TEST_001) A PIVOT(
MAX(DM) AS DM FOR RN IN(
1 ,
2,
3
)
);