Access SQL中的日期排名?

时间:2012-06-22 18:47:56

标签: ms-access

我有一个查询从表格中提取最近六个月的数据,该表格包含一个列UseDates(截至今天的6月,该表格的日期为2011年12月至2012年5月)。

我希望包含一个“排名”列,该列将1与所有12月日期相关联,2与所有1月日期相关联等 - 对于前一个月对应的日期最多为6。如果我从现在开始一个月打开这个查询,那么1将与1月等相关联。

我希望这是有道理的!

示例,如果我现在运行查询

UseDate        Rank
12/31/2011     1
1/12/2012      2
...
5/23/2012      6

示例,如果我在八月份运行查询:

UseDate        Rank
2/16/2012      1
3/17/2012      2
...
7/21/2012      6

示例,如果我在三月份运行查询:

UseDate        Rank
9/16/2011      1
10/17/2011     2
...
2/24/2012      6

3 个答案:

答案 0 :(得分:0)

您可以将month function用于UseDates,并从now函数的结果中减去它。如果它变为负数,只需添加12.此外,您可能希望添加1,因为您从1开始而不是0.显然它应该工作半年的日期范围。当你需要"排名"你会遇到麻烦。好几年了。

答案 1 :(得分:0)

SELECT
    UseDates,
    DateDiff("m", Date(), UseDates) + 7 AS [Rank]
FROM YourTable;

答案 2 :(得分:0)

您可以按计数排名。

SELECT 
   Table.ADate, 
   (SELECT Count(ADate) 
    FROM Table b 
    WHERE b.ADate<=Table.ADate) AS Expr1
FROM Table3;

您必须在子查询中重复where where语句:

SELECT 
   Table.ADate, 
   (SELECT Count(ADate) 
    FROM Table b 
    WHERE b.ADate<=Table.ADate And Adate>#2012/02/01#) AS Expr1
FROM Table3
WHERE   Adate>#2012/02/01#