select a."노선ID",b."정류장ID",
case when(d.depart_sta_id = d.arrv_sta_id) then
decode(c.sta_seq,1,?,LAG(b."정류장ID", 1, 0) OVER (ORDER BY c.route_id,c.STA_SEQ))
else
decode(c.sta_seq,1,'',LAG(b."정류장ID", 1, 0) OVER (ORDER BY c.route_id,c.STA_SEQ)) end AS 전정류장ID,
c.sta_seq as 정차순번
from "MV_노선" a, "MV_정류장" b, mst_bus_routeinfo@card c,mst_bus_route@card d
where trim(a."CARD_노선ID") = trim(c.route_id) and trim(b."CARD_정류장ID") = trim(c.bus_sta_id) and d.bus_route_id = c.route_id
정차순번순으로 노선ID, 정류장ID, 전정류장ID 를 표출하고 있습니다.
기본적으로 전정류장 ID 는 정차순번이 1번일때는 1번 전에는 없으므로 null 로
표현합니다. 그런데 정류장에는 순환하는 정류장이 있어서(조건 = d.depart_sta_id = d.arrv_sta_id )
1번 전 정류장이 그 정류장 정차순번에 마지막 정류장이 될떄가 있습니다.
그 조건을 ? 표 해놓은곳에 넣고 싶은데 , 방법을 모르겠습니다.
c.sta_seq 가 number 타입이라 max 함수를 사용하면 될것도 같은데 group by 절 사용 미숙으로 잘안되더라구요
조언부탁드립니다.
|