Sql 如何从日期中选择一个非空日期-如果日期为空,则选择下一个
我需要从一周中选择一个日期,必须是星期五。然而,当星期五为空时——这意味着没有输入任何数据,我必须找到同一周中有数据的任何其他日期。有人能分享他们对如何解决这种情况的看法吗 如果您在下面的数据中看到,在第二周,星期五有空条目,因此必须选择另一天Sql 如何从日期中选择一个非空日期-如果日期为空,则选择下一个,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要从一周中选择一个日期,必须是星期五。然而,当星期五为空时——这意味着没有输入任何数据,我必须找到同一周中有数据的任何其他日期。有人能分享他们对如何解决这种情况的看法吗 如果您在下面的数据中看到,在第二周,星期五有空条目,因此必须选择另一天 Day Weekdate Data entry dt Data 1 2/7/2016 2 2/8/2016 3 2/9/2016 4 2/10/2016 5 2/
Day Weekdate Data entry dt Data
1 2/7/2016
2 2/8/2016
3 2/9/2016
4 2/10/2016
5 2/11/2016
6 2/12/2016 2/12/2016 500
7 2/13/2016
1 2/14/2016
2 2/15/2016
3 2/16/2016
4 2/17/2016 2/17/2016 300
5 2/18/2016
6 2/19/2016 NULL NULL
7 2/20/2016
1 2/21/2016
2 2/22/2016
3 2/23/2016
4 2/24/2016
5 2/25/2016
6 2/26/2016 2/26/2016 250
7 2/27/2016
你可以试试这个
--Not null data
select * from tblData
where DATEPART(dw,weekDate) = 6 and data is not null
Union
Select data.* from
(
select weekDate
from tblData
where DATEPART(dw,weekDate) = 6 and data is null
) nullData --Select Friday with null data
Cross Apply
(
--Find first record with not null data that is within this week
Select top 1 *
From tblData data
Where
data.weekDate between Dateadd(day, -6, nullData.weekDate) and nullData.weekDate
and data.data is not null
Order by data.weekDate desc
) data
您可以尝试以下方法来获取表格中每周最新日期(先是星期五,然后是每隔一天)的输入数据:
SELECT
Weeks.FirstofWeek,
Detail.Day,
Detail.DataEntryDt,
Detail.Data
FROM
( --master list of weeks
SELECT DISTINCT DATEADD(DAY,(1-DATEPART(dw,Weekdate)),Weekdate) AS FirstofWeek
FROM dataTable
) AS Weeks
LEFT OUTER JOIN
( --detail
SELECT
--order first by presence of data, then by date, selecting Friday first:
ROW_NUMBER() OVER (PARTITION BY DATEADD(DAY,(1-DATEPART(dw,Weekdate)),Weekdate) ORDER BY CASE WHEN Data IS NOT NULL THEN 99 ELSE 0 END DESC, CASE WHEN [Day] = 6 THEN 99 ELSE [Day] END DESC) AS RowNum,
[Day],
DATEADD(DAY,(1-DATEPART(dw,Weekdate)),Weekdate) AS FirstofWeek,
Weekdate,
DataEntryDt,
Data
FROM dataTable
) AS Detail
ON Weeks.FirstofWeek = Detail.FirstofWeek
AND Detail.RowNum = 1 --get only top record for week with data present
样本数据的期望输出是什么?在给定的一周内,您希望的天数顺序是否有偏好?