gpt4 book ai didi

sql - 如何在一周内获取 "largest day"?

转载 作者:行者123 更新时间:2023-12-01 16:03:49 26 4
gpt4 key购买 nike

当一周的“最大的一天”不存在时如何获取数据?

例如,如果我的数据库中不存在特定一周的星期五(假设星期六和星期日不在我的数据库中),我仍然希望能够获取星期四的数据。如果星期五和星期四都不存在,我想获取星期三等的数据。

这是我目前所拥有的(此代码允许我从数据库中获取该月的最后一天):

/**Select Last Day Of Month**/
SELECT * FROM [mytable]
WHERE [date] IN (SELECT MAX([date])
FROM [mytable]
GROUP BY MONTH([Date]), YEAR([Date]))

我还了解到,您可以使用 DATEPART 函数来获取特定日期(即星期五)的所有数据,我不确定的是如果星期五不存在,如何获取星期四。我希望获取具有相应特征的所有数据,而不是某一周的数据。谢谢!

举一个更清楚的例子:假设我的数据库中有四个输入数据->
1. 2016/8/19(星期五), 红色
2. 2016/8/18(星期四), 蓝色
3. 2016/8/11(星期四), 红色
4. 2016/8/10(周三), 红色
执行查询后,我想要:
1. 2016/8/19(星期五), 红色
3. 2016/8/11(星期四), 红色
之所以选择它们,是因为这两个数据是该周对应的“最大”数据。

最佳答案

看看以下查询是否有帮助。它显示给定输入数据中每周的最后一天。

declare @table table(
date datetime
)

insert into @table
values
('08/01/2016'),
('08/02/2016'),
('08/03/2016'),
('08/04/2016'),
('08/05/2016'),
('08/06/2016'),
('08/07/2016'),
('08/08/2016'),
('08/09/2016'),
('08/10/2016'),
('08/11/2016'),
('08/12/2016'),
('08/13/2016'),
('08/14/2016'),
('08/15/2016'),
('08/16/2016'),
('08/17/2016'),
('08/18/2016'),
('08/19/2016'),
('08/20/2016'),
('08/21/2016'),
('08/22/2016'),
('08/23/2016')


;with cte as
(
select date, row_number() over(partition by datepart(year,date),datepart(week,date) order by date desc) as rn from @table
)

select date,datename(weekday,date) from cte
where rn = 1

关于sql - 如何在一周内获取 "largest day"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39075053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com