SQL Server 2008 R2 데이터베이스는 몇 가지 옵션에 대해 각각 1 분 간격으로 거래 레코드가 있으며 각 분에는 여러 만료에 대한 레코드가 들어 있습니다. 예 :올바른 SQL 문은 앞쪽 만료 계약을 나타내는 올바른 행을 반환합니다.
Symbol, TradeDate, Expiry, Open, High, Low, Close
AMZN, 4/01/2009 9:31:00, 4/17/2009, 8, 10, 9, 8.5
AMZN, 4/01/2009 9:31:00, 5/17/2009, 10, 11, 10, 11
AMZN, 4/01/2009 9:31:00, 6/18/2009, 12,13,12,12
GOOG, 4/01/2009 9:31:00, 4/17/2009, 8, 9, 7, 7.5
AMZN, 4/01/2009 9:32:00, 4/17/2009, 8.2, 8.9, 8.3, 8.5
AMZN, 4/01/2009 9:32:00, 5/16/2009, 3, 4, 4, 4
...
AMZN, 4/20/2009 9:31:00, 5/16/2009, 8.5, 9, 8.75, 8.75
AMZN, 4/20/2009 9:31:00, 6/18/2009, 9, 10, 9, 9.2
옵션에서 항상 앞 부분 계약의 개념이 있습니다. 이 문제의 경우, 앞 달 계약을 다음과 같이 정의하십시오. 해당 계약의 만기 날짜보다 적은 TradeDate 항목이있는 경우, 이는 앞 달입니다. 그렇지 않으면 앞쪽 달은 다음 달 계약입니다. 예를 들어, 위의 데이터에서 2009 년 4 월 1 일 AMZN 앞쪽 달은 4/17/2009에 만료되는 계약입니다. 그러나 TradeDate 4/20/2009로 이동할 때, 앞의 달은 2007 년 4 월 17 일 계약이 주말에 만료 된 이후 5/16/2009 계약입니다.
TradeDate가 무엇인지에 따라 "앞 달 계약"을 제공하는 올바른 행을 항상 반환하는 SQL 문은 무엇입니까?
주어진 예제 데이터에 대해 EXPECTED 출력을 추가 할 수 있습니까? 이것은 당신이 원하는 것을 결정하고 정확한 쿼리를 줄 때 나를 도울 것입니다. – danishgoel