2013-12-10 3 views
1

SQL Server 2012를 사용 중이고 gridview에서 사용할 수있는 쿼리를 만들고 싶습니다.SQL에서 날짜 사이의 데이터 선택

기본적으로 데이터는 상태 목록 (제한됨, 사용 불가능 및 사용 가능)이며 각 데이터 옆에 datetime이 있습니다.

특정 상태가 유지되었을 때 날짜와 상태를 내 gridview에 표시하려고합니다.

그래서 enter image description here

예를

을 위해 내가 가진 또 다른 문제는 상태가 나는 것을 보여줄 필요가 오늘 변경된 경우, 즉 그리드의 맨 윗줄입니다.

내 SQL 기술에 따라 다르므로 도움이된다면 도움이 될 것입니다.

+0

dateTo 사용자가 입력하거나 당신을 통과하거나 현재 날짜를 계산하려면? – SoftSan

답변

1

MSSQL 2012 년 당신이 LEAD() 기능을 사용할 수 있습니다

select Status, 
     StartDate, 
     LEAD(StartDate, 1,null) 
     OVER (ORDER BY startDate) 
     as EndDate 
FROM T 
ORDER BY StartDate 

SQLFiddle demo

0
SELECT 
    Status_Current.yourDate AS Date_From, 
    Status_Next.yourDate  AS Date_To, 
    Status_Current.yourStatus AS Status 
FROM 
    yourData AS Status_Current 
LEFT JOIN 
    yourData AS Status_Next 
    ON Status_next.yourData = (SELECT TOP 1 lookup.yourDate 
           FROM yourData AS lookup 
           WHERE lookup.yourDate > Status_Current.yourDate 
          ORDER BY lookup.yourDate ASC 
          ) 
ORDER BY 
    Status_Current.yourDate DESC 
관련 문제