ต้องการ Count ข้อมูลครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,796   5
URL.หัวข้อ / URL
ต้องการ Count ข้อมูลครับ

มีข้อมูล ดังนี้ครับ

TransDate   Mat
01/01/09          A
02/01/09          A
03/01/09          A
04/01/09          B
05/01/09          B
06/01/09          C
01/02/09          A
02/02/09          B
03/02/09          C
04/02/09          C
05/02/09          A
06/02/09          A
07/02/09          D

ต้องการ Count ให้เป็นแบบนี้ครับ

Year     Month     CountOfMat
2009     1     3
2009     2     4

ตอนนี้ใช้ 2 Quries ก็ได้ผลตามต้องการครับ

แต่อยากรู้วิธีที่ใช้ Query เดียวแล้วได้ผลตามต้องการ (อีกแล้ว) ครับ
ลองนั่งมึน ๆ ทำจับ SQL มาซ้อนกัน แล้วยังไม่ได้ครับ ยังไม่ค่อยรู้หลักการเท่าไรครับ

ขอบคุณทุกคำตอบครับ

5 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R01390


ขอเสนอแนวทางใช้ select query แล้วก็เปลี่ยน format ของฟิลด์วันทีให้เป็นปีกับเดือน และนับmat ก็ได้ครับ
2 @R01392
แบบคุณเจตระยอง จะได้คำตอบจำนวนรายการในแต่ละเดือน
Year     Month     CountOfMat
2009     1     6
2009     2     7

แต่ผมอยากได้คำตอบ จำนวน Mat ในแต่ละเดือน
Year     Month     CountOfMat
2009     1     3
2009     2     4

หมายเหตุ อยู่ระยองเหมือนกันหรือครับ ยินดีที่ได้รู้จักครับ
3 @R01394
คิวรี่ย่อยครับ

SELECT q.y, q.m, Count(q.Mat) AS CountOfMat
FROM
(
SELECT Year([transdate]) AS y, Month([Transdate]) AS m, Mat
FROM Table1
GROUP BY Year([transdate]), Month([Transdate]), Mat
) AS q
GROUP BY q.y, q.m;
4 @R01397
แบบคุณ yeadram ใช่เลยครับ

พอจะมองเห็นหลักการคร่าว ๆ แล้วครับ
เอา query แรก มาใส่ไว้ใน query ที่สอง โดย as query แรกให้เป็น dummy ไว้
ใช่หรือเปล่าครับ

ขอบคุณมากครับ
5 @R01399
ลองดูน่ะครับ Concept ของผมคือ

1. ใช้ Select Query
2. สร้าง Field ใหม่ ขึ้นมาใหม่ 2 Field เพื่อ Group ปี และ เดือน คือ
Year: Format([TransDate],"yyyy")
Month: Format([TransDate],"mm")
ทั้ง 2 Field เลือก Total เป็น Group By
3. เลือก Field Mat มา 2 Field แต่ ตัวหนึ่ง Total เป็น Group By และ
อีกตัวหนึ่ง Total เป็น Count
4. หรือ เขียน SQL ดังนี้
SELECT Format([TransDate],"yyyy") AS [Year], Format([TransDate],"mm") AS [Month], Table1.Mat, Count(Table1.Mat) AS CountOfMat
FROM Table1
GROUP BY Format([TransDate],"yyyy"), Format([TransDate],"mm"), Table1.Mat
ORDER BY Format([TransDate],"yyyy"), Format([TransDate],"mm"), Table1.Mat;
5. ลอง Run Query ดู

ไม่แน่ใจว่าจะถูกต้องตามคำถาม หรือ ไม่
ขอบคุณครับ
สุชาติ/ชลบุรี
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2805s