首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >场景中的最佳实践

场景中的最佳实践
EN

Stack Overflow用户
提问于 2014-02-21 02:15:28
回答 1查看 85关注 0票数 0

我目前正在尝试完成以下工作:

获取最近6个月的最后一周邮戳,以下是最终结果可能的样子:

代码语言:javascript
运行
复制
Month  | Weekstamp |
2013-12| 2013-52   |
2014-01| 2014-05   |

……诸若此类

我有一个辅助表,它包含所有的周,并允许我连接到日历表,而日历表又包含所有的月份,这意味着我能够每月获得所有的周戳。

但是,我如何获得过去6个月的所有上周数据?我的想法是使用一些sor的临时表(从来没有使用过,我是SQL的初学者),它计算每个月需要过滤掉的所有Weekstamp,然后只给出我可以用来过滤包含我需要的所有数据的查询的值。

谁有更好的主意?

正如我所说的,我只是一个初学者,所以我真的不能说最好的方法是什么

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2014-02-21 02:31:39

我猜你的挑战是决定过去的六个月是什么。要做到这一点,您可以使用一个统计表(spt_values)和DateDiff来确定过去六个月的时间。

您还可以根据不同的DB和版本轻松完成此操作,而无需日历或weeks表。

代码语言:javascript
运行
复制
WITH rnge 
     AS (SELECT number 
         FROM   master..spt_values 
         WHERE  type = 'P' 
                AND number > 0 
                AND number < 7), 
     dates 
     AS (SELECT EOMONTH(Dateadd(m, number * -1, Getdate())) dt 
         FROM   rnge) 
SELECT Year(dt)         year, 
       Month(dt)        month, 
       Datepart(wk, dt) week 
FROM   dates 

生成以下输出

代码语言:javascript
运行
复制
| YEAR | MONTH | WEEK |
|------|-------|------|
| 2014 |     1 |    5 |
| 2013 |    12 |   53 |
| 2013 |    11 |   48 |
| 2013 |    10 |   44 |
| 2013 |     9 |   40 |
| 2013 |     8 |   35 |

Demo

我将把格式化这些值留给您

由于SQL Server 2012使用EOMONTH,因此假定SQL Server 2012使用EOMONTH。有关SQL Server的早期版本,请参阅Get the last day of the month in SQL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21916217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档