2011-06-16 39 views
0
TRANSFORM Count(Research.Patient_ID) AS CountOfPatient_ID 
SELECT DateDiff("yyyy",[DOB],Date()) AS [Age Group 22 - 24] 
FROM (Research INNER JOIN Demographics ON Research.Patient_ID = Demographics.ID) INNER JOIN [Letter Status] ON Research.Patient_ID = [Letter Status].Patient_ID 
WHERE (((DateDiff("yyyy",[DOB],Date())) Between 22 And 24)) 
GROUP BY DateDiff("yyyy",[DOB],Date()) 
PIVOT [Letter Status].Letter_Status; 

此代碼列出了各個年齡段,但是我想計算所有年齡段的總和,該範圍均落在該範圍內。所以如果有兩個22歲的孩子和一個23歲的孩子,Total會是3,而不是在列中看到他們所有的年齡......SQL - 從交叉表查詢中獲取總數

請幫忙。

回答

1

您需要在switch語句中定義年齡範圍。爲了更容易,我創建了一個內聯查詢來計算年齡(我假設它在研究表中)。

TRANSFORM Count(Research.Patient_ID) AS CountOfPatient_ID 
SELECT SWITCH (Age <= 22, "Under 22", 
     Age > 22 and AGE <= 24 , "Between 22 And 24", 
       Age > 24 and AGE <= 26, "Between 24 And 26", 
       Age > 26 , "Over 26") as Age_Range 
FROM 
    (Research 
    INNER JOIN (SELECT ID, DateDiff("yyyy",DOB,Date()) as AGE 
     FROM Demographics) Demographics 
    ON Research.Patient_ID = Demographics.ID) 
    INNER JOIN [Letter Status] 
    ON Research.Patient_ID = [Letter Status].Patient_ID 

GROUP BY AGE 


PIVOT [Letter Status].Letter_Status; 
+0

語法錯誤(缺少操作員)

無這很重要。不知道在哪裏 – jerry 2011-06-16 20:58:24

+0

@傑裏好吧我會採取另一個裂縫,但在此之前,你可以確認哪一個DOB表。 – 2011-06-16 21:04:21

+0

當然,這是在「人口統計學」。感謝您的幫助 – jerry 2011-06-16 21:08:20

3

請確定您明白當您使用此方法確定一個人的年齡時,您會得到什麼。

DateDiff("yyyy",[DOB],Date()) 

如果DOB =#1987年12月31日#,今天的日期(#2011-6-16#),則DateDiff會給你這個隨着年齡:

? DateDiff("yyyy", #1987-12-31#, #2011-6-16#) 
24 

(實際上對於1987年的任何DOB,DateDiff與今天的日期將給你24作爲「年齡」。此外,對於1987年的任何DOB,在2011年的任何一天使用該方法,你將得到24.)

OTOH年齡通常被理解,人們可能會說:「廢話!他的生日還有6個月以上的時間,今天他只有23歲。」

造成這種差異的原因是DateDiff("yyyy"只評估兩個日期的年分量。考慮這兩個日期相隔一天:

? DateDiff("yyyy",#2010-12-31#,#2011-1-1#) 
1 

當您使用該表達式計算「年齡」時會發生同樣的事情。

要返回年齡普遍理解,你可以使用表達式如下:

? DateDiff("yyyy", #1987-12-31#, Date())+ _ 
      Int(Format(Date(), "mmdd") < Format(#1987-12-31#, "mmdd")) 

我複製訪問網絡的表達:Calculate Age of a person。該頁面包括確定年齡的其他方法。如果,顯然像OP,你希望所有DOB於1987年24今天被算作年齡,或在任何一天在2011年

+0

謝謝,我不知道。這一定會有所幫助 – jerry 2011-06-17 10:55:32