我肯定我漏掉了一些明显的东西,但我想不出来。我的问题很简单,我有一个包含以下信息的表:
年,周数,数据
我只想选择周数小于当前周数的数据。这很简单。但我真正想要的是在当前周数和当前年份之前注册的所有数据。意思是如果我有以下数据:
Year Week Data
2019 20 123
2019 21 234
2020 20 345
2020 21 456
如果本周是2020年第21周,那么我希望输出为:
year Week Data
2019 20 123
2019 21 234
2020 20 234
我不想要2020-21,因为那是我当前查询的年份/周:
SELECT T.Year, T.Week, T.Data
FROM tblData AS T
WHERE Year<=year(Date()) AND Week<Weeknumber(Date())
这个查询的问题是,它没有显示2019年超过21周,我希望它这样做。我知道为什么这个sql不起作用,但是我不知道如何正确地执行它。
我该怎么做?
3条答案
按热度按时间wbgh16ku1#
年份是一个保留字,不应该用保留字作为任何东西的名称。我用yr作为字段名。
考虑:
91zkwejq2#
由于您来自丹麦,根据iso 8601,表格很可能会反映年份和周数。但是,vba的任何本机函数都不会返回iso 8601日期的年和周,对于新年前后的日期,年份通常与日历年不同。
因此,需要返回iso 8601年和周的函数:
举个例子:
现在,在查询中使用这些选项:
您可以安全地将year作为字段名,只要您在查询中以表名作为前缀或将其括在括号中:
[Year]
.lh80um4z3#
在进一步测试之后,6月7日非常接近,但sql最终删除了2019年比当前一周多的周数(我不希望这样)。我的问题可能还不够清楚,但这里有一个sql where标准,它给出了我想要的东西。也就是说,我只希望查询从当前年份的当前星期中删除数据。所有比这更古老的东西,我都想展示。
但是谢谢你6月7日的帮助,因为你直接引导我找到了答案