2014-02-13 67 views
0

我有一個表,其中包括以下日期3/2/2014,3/5/2014,6/21/2014,8/16/2014,1/5/2015。我需要一種每天在每個月顯示的方式,如果日期存在則顯示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 

我是新來的訪問,所以任何幫助,將不勝感激:)

更新: 如果我想改變上面的例子,而不是在那裏,只返回「Y 「或」N「我現在想要返回一個項目ID,我將如何去編輯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 
+1

你有沒有試過的代碼? – Linger

回答

2

您需要編寫一個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"); 
+0

感謝您的快速回復。我如何能夠用30天,2月和閏年來計算天數? – Hughes

+0

這是一個很好的問題,Crash,但是你有兩種方法來獲得你的結果:如果你不指定列標題列表(IN子句中的單個日子),你就有一個動態結果;如果一天完全不存在,則不會獲得該列。否則,您可以指定標題列名稱。所以你確定你總是有專欄。我可以向你建議的是:如果你的數據庫已經滿了,每天有很多記錄,你可以試着避免使用IN子句。否則,由於我對Access數據庫的認識不足,我無法幫助你...... :( –

+0

Corrado Piola,你的幫助比你知道的要多,SQL對我來說也是新的,這對我來說是一個很好的開始,或者其他人,也許能夠工作:) – Hughes