2013-12-10 62 views
1

我正在使用SQL Server 2012,我想創建一個查詢,可以在gridview中使用。在SQL中的日期之間選擇數據

基本上,數據是狀態列表(受限制,不可用和可用),並且每個數據都在其旁邊有一個日期時間。

我想在我的gridview中顯示某個狀態持有時的日期和狀態。

因此,例如

enter image description here

的另一個問題我已經是即如果狀態今天我需要證明改爲網格的頂線。

我的SQL技能沒有達到這個水平,所以提供的任何幫助都會很棒。

+0

dateTo是由用戶輸入或通過你傳遞或要計算它爲當前的日期? – SoftSan

回答

1

在2012 MSSQL你可以使用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 
相關問題