รบกวนช่วย query รวมยอดจากการนับ รายการ โดยGroup วันที่ เป็น รายเดือน



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

18 ส.ค. 62 , 17:40:30
อ่าน 480 ครั้ง

Peerapach

  • สมาชิกไท.Access
  • กระทู้: 8

  • ขอบคุณอาจารย์ทุกท่านครับ ไทยAccess

    • ดูรายละเอียด

ผม มี ตาราง ดังนี้
ID     Date         Status          Type
1      1-7-2019       1                2
2      2-7-2019       2                1
3      3-7-2019       1                1
4      4-7-2019       1                1
5      1-8-2019       1                1
6      2-8-2019       2                1
7      3-8-2019       2                2
8      4-8-2019       1                1
status 1 = complete
status 2 = Inprogress

ต้องการ query ออกมาให้ได้แบบตารางข้างล่าง โดย เอาเฉพาะ Type 1

Month   Inprogress    complete    Total    %complete           
July            1                2              3             66.66 (2/3)
August        1                2              3             66.66 (2/3)

ตอนนี้ ลองใช้ Dcount รันออกมา ได้  Inprogress เป็น 0 ครับ
โค๊ด: [Select]
SELECT Format([workorderDate],"mmm-yy") AS [Date],
DCount("[workstatusID]","[tbl_workorder]","[workstatusID"="1") AS Inprogress
FROM tbl_workorder
GROUP BY Format([workorderDate],"mmm-yy"), tbl_workorder.worktypeID
HAVING (((tbl_workorder.worktypeID)=1));

รบกวนอาจารย์ ช่วยทีครับ

 

19 ส.ค. 62 , 00:53:10
ตอบกลับ #1

สันติสุข

- คิวรี่นี้ซับซ้อนเสียหน่อย ถ้าเขียนจริงๆคงจะเป็น SELECT ซ้อนกัน 3 ชั้น แต่เพื่อให้ดูง่าย(หรือเปล่าไม่รู้)และคงการใช้ DCount() เอาไว้ ก็จะออกมาเหลือ 2 ชั้น
- ในนี้ผมสมมุติให้ชื่อเทเบิลว่า TB และชื่อฟิลด์ว่า dt,status,type คุณไปเปลี่ยนเองแล้วกัน
- ผมเขียนเพื่อให้ดูสะอาดตาขึ้นโดยขึ้นบรรทัดใหม่ แต่สามารถนำเอามาต่อกันโดยมีช่องว่างคั่นสักตัวนึงก็ได้นะครับ เช่น บรรทัดที่ 1 และ 2 สามารถเขียนเป็น SELECT [Month-Year], Inprogress, Complete, [Inprogress]+[Complete] AS Total, ก็ได้
โค๊ด: [Select]
SELECT
[Month-Year], Inprogress, Complete,
[Inprogress]+[Complete] AS Total,
Format([Complete]/([Inprogress]+[Complete])*100,"0.00") AS [% Complete]
FROM
(SELECT Format([dt],"mmm-yyyy") AS [Month-Year],
First(Month([dt])) AS M,
First(Year([dt])) AS Y,
First(Val(DCount("*","TB","Status = '2' and Type = '1' and (month(dt) = " & Month([dt]) & ") and (year(dt) = " & Year([dt]) & ") "))) AS Inprogress,
First(Val(DCount("*","TB","Status = '1' and Type = '1' and (month(dt) = " & Month([dt]) & ") and (year(dt) = " & Year([dt]) & ") "))) AS Complete
FROM TB
GROUP BY Format([dt],"mmm-yyyy"))  AS Q1

ORDER BY Y, M;
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Peerapach

21 ส.ค. 62 , 14:22:40
ตอบกลับ #2

Peerapach

  • สมาชิกไท.Access
  • กระทู้: 8

  • ขอบคุณอาจารย์ทุกท่านครับ ไทยAccess

    • ดูรายละเอียด

ขอบคุณครับ อาจารย์

 


บอร์ดเรียนรู้ Access สำหรับคนไทย