sql sever 查询

2019-05-06_154023.png

sql sever如何查询工序的上下工序,例如工序3的上工序是工序2,下工序是工序4

history 发布于 2019-5-6 15:42
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
1
axingLv6专家互助
发布于2019-5-6 16:28
with temp as (
select '工序1' as a, 1 as b
union all 
select '工序2' as a, 2 as b
union all 
select '工序3' as a, 3 as b
union all 
select '工序4' as a, 4 as b
union all 
select '工序5' as a, 5 as b
)

select a,b,lag(b) over (order by b) as 上工序,lead(b) over (order by b) as 下工序 from temp

blob.png

  • 林柏勳 林柏勳 没想过可以这么写,小弟帮点个赞
    2019-05-06 16:44 
最佳回答
0
天空-小孙Lv4初级互助
发布于2019-5-6 15:44

根据旁边的gxnumber字段加减就可以了吧

最佳回答
0
尘埃。Lv2初级互助
发布于2019-5-6 15:45

 +1,-1 不就好了,老哥,闹呢? 

  • history history(提问者) 我这里写着是1,2,3,4,5而已,实际是无规则的,可能是,3,5,8,10,15,17这样的,gxnumber只是提供排序而已
    2019-05-06 16:13 
  • 尘埃。 尘埃。 回复 history(提问者) 建一个伪列
    2019-05-06 16:14 
最佳回答
0
林柏勳Lv0见习互助
发布于2019-5-6 15:46(编辑于 2019-5-6 16:39)

旁边的gxnumber 会连续吗,如果是的话那去做+1/-1就好了
如果不是的话,我再提供解法


  • history history(提问者) gxnumber 是无规则的,只用来排序而已
    2019-05-06 16:14 
  • 林柏勳 林柏勳 回复 history(提问者) 小弟不才随便写写,补充了下图片,但感觉楼下axing大的写法更好
    2019-05-06 16:40 
最佳回答
0
Kevin-sLv7中级互助
发布于2019-5-6 15:49(编辑于 2019-5-6 19:38)

用LAG和LEAD函数

  • history history(提问者) sql sever 哟
    2019-05-06 16:14 
  • Kevin-s Kevin-s 回复 history(提问者) 不可以用么,oracle和sql sever这函数的功能不都一样类
    2019-05-06 16:18 
  • history history(提问者) 回复 Kevin-s 能不能举个例子?
    2019-05-06 16:23 
  • Kevin-s Kevin-s 回复 history(提问者) 我修改答案了,可以查看了,不懂就q
    2019-05-06 16:45 
最佳回答
0
kangjavaLv2见习互助
发布于2019-5-6 15:58(编辑于 2019-5-6 15:59)

写个样例,供参考

select 

t2.gxname 上工序,

t1.gxname 工序,

t3.gxname 下工序

from gx表 t1

left join gx表 t2 on t1.gxnumber=t2.gxnumber+1 

left join gx表 t3 on t1.gxnumber=t3.gxnumber-1 

where t1.gxname='工序3'

-- where gxname='${gx}'  --制报表时可以做筛序

  • 7关注人数
  • 679浏览人数
  • 最后回答于:2019-5-6 19:38
    请选择关闭问题的原因
    确定 取消
    返回顶部