【问题标题】:Access - Report Formatting and Display访问 - 报告格式和显示
【发布时间】:2014-02-13 13:32:50
【问题描述】:

我有一张表格,日期如下:2014 年 3 月 2 日、2014 年 3 月 5 日、2014 年 6 月 21 日、2014 年 8 月 16 日、2015 年 1 月 5 日。我需要一种方法来显示每个月的每一天,如果日期存在则显示 Y,如果不存在则显示 N。该表是动态的,可以添加更多日期。

例子:

          March 2014
1 | 2 | 3 | 4 | 5 | ... | 31
N | N | Y | N | Y | ... | N
          July 2014
1 | 2 | ... | 20 | 21 | 22 | ... | 31
N | N | ... | N  | Y  | N  | ... | N
          August 2014
1 | 2 | ... | 20 | 21 | 22 | ... | 31
N | N | ... | N  | Y  | N  | ... | N
          January 2015
1 | 2 | ... | 15 | 16 | 17 | ... | 31
N | N | ... | N  | Y  | N  | ... | N

我是 Access 新手,因此我们将不胜感激:)

更新: 如果我想将上面的示例更改为现在想要返回项目 ID 而不是只返回“Y”或“N”的位置,我将如何编辑 IIF 语句?项目 ID 与日期存储在同一个表中。

          March 2014
1 | 2 |  3  | 4  | 5   | ... | 31
N | N |  4B | N  | 2W  | ... | N
          July 2014
1 | 2 | ... | 20 | 21  | 22  | ... | 31
N | N | ... | N  | Z8  | N   | ... | N
          August 2014
1 | 2 | ... | 20 | 21  | 22  | ... | 31
N | N | ... | N  | E5  | N   | ... | N
          January 2015
1 | 2 | ... | 15 | 16  | 17  | ... | 31
N | N | ... | N  | 1FF | N   | ... | N

【问题讨论】:

  • 你有没有试过的代码?

标签: sql ms-access ms-access-2007


【解决方案1】:

您需要编写一个 CrossTab 查询(枢轴)。 比如:

TRANSFORM iif(Count(*)>0,"Y","N") AS Val
SELECT Year(YourDate) AS Y, Month(YourDate) AS M
FROM YourTable
GROUP BY Year(YourDate), Month(YourDate)
PIVOT Day(YourDate) In ("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");

【讨论】:

  • 感谢您的快速回复。我如何计算 30 天、2 月和闰年的天数?
  • 这是一个很好的问题,Crash,但是你有两种方法可以得到你的结果:如果你没有指定列标题列表(IN 子句中的单天),你有一个动态的结果;如果 Day 根本不存在,则不会得到该列。否则,您可以指定标题列名称。所以你确定你总是有这些列。我可以向您建议的是:如果您的数据库已满,每天有很多记录,您可以尝试避免使用 IN 子句。否则,由于我对 Access 数据库的了解不足,我无法帮助您... :(
  • 科拉多·皮奥拉,您提供的帮助比您知道的要多。 SQL 对我来说也是新的,这是一个很好的开始,我或其他人可能能够从中工作:)
  • 谢谢,Crash,很高兴能帮助这么好心的人……祝你好运! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多