안녕하세요? 하기 inner 쿼리 조회 조건 중에 바깥에 table 컬럼값(shipment) 를 넣고 싶은데 방법이 있을지 문의드립니다. 현재로는 아래와 같이 쿼리하면 바인딩 에러가 뜹니다. (여러 부분으로 구성된 식별자 "SLL.Shipment Date"은(는) 바인딩할 수 없습니다.) select SLL.No_ as ITEM, SLL.[Shipment Date], sum(SALES_QTY) from SHH inner join SLL on SHH.No_ = SLL.[Document No_] LEFT OUTER JOIN ( SELECT SL.No_ as ITEM, SUM(SL.[Outstanding Quantity]) AS SALES_QTY FROM SH WITH(NOLOCK) LEFT OUTER JOIN SL WITH(NOLOCK) ON SH.[Document Type] = SL.[Document Type] AND SH.[No_] = SL.[Document No_] WHERE SH.[Document Type] = 1 AND SL.[Location Code] <> 'DROPSHIP' AND SL.[Type] = 2 and sl.[Shipment Date] <= SLL.[Shipment Date] <- 이 부분 추가 하고자 함 GROUP BY SL.No_ ) SALES ON SALES.ITEM = SLL.No_ group by SLL.No_, SLL.[Shipment Date]
left join 한 서브 쿼리는 Sales Line (SL테이블)의 품목당 전체 outstanding 수량을 더한 컬럼이고 다만 shipment조건을 main쿼리에서 추출해서 조건을 걸어주길 원합니다.
왜냐면 최종 원하는 목표는 main select절에서 Sales Line 전체 품목의 Sales_QTY을 보여주되
내부적으로는 각각 오더의 품목별로 shipment date이 다르므로
각 오더별 최초 일자부터 shipment date 까지의 누적합을 품목별 sum으로 main select에서 보여주기를 원합니다. (결과값 샘플 첨부)
SL의 키는 [Document Type] 과 [Document No_] (오더번호)와 No_(품목코드) 입니다.
동일한 SL테이블이 서로 조인되어야 할거 같습니다.
기 쿼리에서 shipment group by는 빼고 다시 올립니다.
select SLL.No_ as ITEM, sum(SALES_QTY) from SHH inner join SLL on SHH.No_ = SLL.[Document No_] LEFT OUTER JOIN ( SELECT SL.No_ as ITEM, SUM(SL.[Outstanding Quantity]) AS SALES_QTY FROM SH WITH(NOLOCK) LEFT OUTER JOIN SL WITH(NOLOCK) ON SH.[Document Type] = SL.[Document Type] AND SH.[No_] = SL.[Document No_] WHERE SH.[Document Type] = 1 AND SL.[Location Code] <> 'DROPSHIP' AND SL.[Type] = 2 and sl.[Shipment Date] <= SLL.[Shipment Date] <- 이 부분 추가 하고자 함 GROUP BY SL.No_ ) SALES ON SALES.ITEM = SLL.No_ group by SLL.No_
글쎄요?
본인만 아는 용어로 설명하지 마시고
상대방이 이해 할 수 있도록 쉽게 설명해 주세요.
이미지를 추가했으나? 이게 뭘 의도한건지 알 수가 없네요?
쿼리는 너무 축약해 놔서 그런건지 의미를 알기 어렵고
SL 과 SLL 과 같이 알리아스만 남겨놔서 테이블이 뭔지 알기 힘드네요?
SL 과 SLL 이 같은 테이블은 아닌지? 의심도 들고
입장을 바꿔 놓고 본인이 작성한 질문글을 천천히 읽어보시고
이게 과연 이 글을 처음 보는 사람이 이해 할 수 있는 질문인지? 곰곰히 생각해 보세요.
질문이 잘 이해가 안가서 핵삼 단어들만 보면
아마도 누적합을 원하는 것 같은데요?
누적합은 셀프조인 없이 그냥 분석함수로 구하면 됩니다.
sl 과 sll 이 같은 테이블이라고 가정하고.
no 별 일자별 qty 합계와 일자별 합계의 누적 합계를 함께 보길 원한다고 가정하고
쿼리를 작성해 보면...
SELECT sl.[No_] , sl.[Shipment Date] , SUM(sl.[Outstanding Quantity]) AS sales_qty , SUM(SUM(sl.[Outstanding Quantity])) OVER( PARTITION BY sl.[No_] ORDER BY sl.[Shipment Date]) AS sales_qty_sum FROM sh INNER JOIN sl ON sh.[Document Type] = sl.[Document Type] AND sh.[No_] = sl.[Document No_] WHERE sh.[Document Type] = 1 AND sl.[Location Code] <> 'DROPSHIP' AND sl.[Type] = 2 GROUP BY sl.[No_], sl.[Shipment Date] ;