我正在使用SQL Server 2012,我想创建一个可以在gridview中使用的查询。
基本上,数据是状态列表(限制,不可用和可用),每个状态都有一个日期时间。
我想在gridview中显示某个状态的日期和状态。
所以例如
我遇到的另一个问题是网格的顶线,即如果今天状态发生变化,我需要表明这一点。
我的SQL技能达不到这一点所以提供的任何帮助都会很棒。
答案 0 :(得分:1)
在MSSQL 2012中,您可以使用LEAD()函数
select Status,
StartDate,
LEAD(StartDate, 1,null)
OVER (ORDER BY startDate)
as EndDate
FROM T
ORDER BY StartDate
答案 1 :(得分: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