1

我有一个查询从具有列 UseDates 的表中提取过去六个月的数据(因此,截至今天 6 月,该表的日期为 2011 年 12 月至 2012 年 5 月)。

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

我希望这是有道理的!

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

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

例如,如果我在 8 月运行查询:

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

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

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

3 回答 3

0

您可以使用月份函数并从now函数的UseDates结果中减去它。如果它变为负数,只需添加 12。此外,您可能希望添加 1,因为您从 1 而不是 0 开始。显然它应该适用于半年的日期范围。当您需要“排名”几年时,您会遇到麻烦。

于 2012-06-22T18:51:54.813 回答
0
SELECT
    UseDates,
    DateDiff("m", Date(), UseDates) + 7 AS [Rank]
FROM YourTable;
于 2012-06-22T18:58:23.080 回答
0

您可以使用计数进行排名。

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

您必须在子查询中重复任何 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#
于 2012-06-22T19:02:29.693 回答