求教一个SQL语句

Hanson_bati_zhu 2002-11-19 03:15:52
兄弟有一张表,数据如下

INV_ID INV_POS_ID AMOUNT
1 01 10
1 17 11
2 22 16
2 01 13
2 17 13
3 33 16
3 21 14
3 33 13
3 02 12
4 06 12
4 17 14


需要按照如下格式输出

LN_ID INV_ID INV_POS_ID AMOUNT
1 1 01 10
2 1 17 11
1 2 22 16
2 2 01 13
3 2 17 13
1 3 33 16
2 3 21 14
3 3 33 13
4 3 02 12
1 4 06 12
2 4 17 14

兄弟不知道应该如何才能组织前面的这个类似ROWNUM的列(LN_ID),还望各位大虾多多帮助
先谢谢了

...全文
50 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuxuan 2002-11-19
  • 打赏
  • 举报
回复
还是你厉害
Hanson_bati_zhu 2002-11-19
  • 打赏
  • 举报
回复
感谢楼上二位大力相助

to: KingSunSha(弱水三千)
这个LN_ID是根据后面的INV_ID作为分组获取的

to:zhangtenyu(wl)
多谢大虾如此辛苦


问题已经解决

可以通过ROW_NUMBER() OVER()来实现这个功能

实现的脚本如下

SELECT ROW_NUMBER() OVER(PARTITION BY INV_ID ORDER BY INV_POS_ID) AS LN_ID,INV_ID,INV_POS_ID,AMOUNT
FROM TEST2



—————————————————————————————————
该死的CSDN,把旧帖子都TMD删了,气死我了!!!

zhangtenyu 2002-11-19
  • 打赏
  • 举报
回复
declare
cursor nrow is select INV_ID,INV_POS_ID,AMOUNT from t6 order by INV_ID;
crow t6%ROWTYPE;

i number;
top number;
begin
top:=1;
i:=0;
open nrow;
fetch nrow into crow;
while nrow%FOUND loop
if i>top then
top:=top+1;
i:=0;
end if;
i:=i+1;
DBMS_OUTPUT.PUT_LINE(i||' '||crow.INV_ID||' '||crow.INV_POS_ID||' '||crow.AMOUNT);
fetch nrow into crow;
end loop;
close nrow;
end;
--可以的话就给分哈。
KingSunSha 2002-11-19
  • 打赏
  • 举报
回复
看不懂你排序的逻辑,这个LN_ID根据什么原则来的?

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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