ฉันถูกขอให้ช่วยในการพัฒนารายงานเพื่อดึงตัวอย่างธุรกรรมแบบสุ่ม 25% ภายในช่วงวันที่ที่ระบุ ฉันไม่ใช่โปรแกรมเมอร์ แต่ฉันสามารถประดิษฐ์สิ่งต่อไปนี้ได้ค่อนข้างเร็ว:
SELECT TOP 25 PERCENT account.CID, account.ACCT, account.NAME, log.DATE, log.action_txt, log.field_nm, log.from_data, log.to_data, log.tran_id, log.init
FROM account INNER JOIN log ON account.ACCT = log.ACCT
GROUP BY account.CID, account.ACCT, account.NAME, log.DATE, log.action_txt, log.field_nm, log.from_data, log.to_data, log.tran_id, log.init
HAVING (((log.DATE) Between #2/7/2018# And #6/15/2018#) AND ((log.action_txt)="mod" Or (log.action_txt)="del") AND ((log.init)="J1X"
ORDER BY log.tran_dt
ซึ่งจะส่งคืน 25% ของบันทึกภายในช่วงวันที่ แต่ละแถวของเรคคอร์ดไม่ซ้ำกัน แต่หมายเลขบัญชีแต่ละหมายเลขอาจมีหลายเรคคอร์ดในแต่ละวัน ในบางกรณี บันทึกก็มีวันที่และ tran_id เหมือนกันด้วย
จากการหารือเพิ่มเติมกับผู้ขอ จริงๆ แล้วเขาต้องการดูธุรกรรมทั้งหมดสำหรับ 25% ของบัญชีที่มีกิจกรรมในแต่ละวันภายในช่วงวันที่ ดังนั้น หากมี 100 บัญชีในวันที่ 1/3/2561 โดยมีบันทึกในตารางนี้ เขาต้องการดูธุรกรรมทั้งหมดสำหรับ 25 บัญชีเหล่านั้น หากมี 60 บัญชีในวันที่ 2/3/2561 โดยมีบันทึกในตารางนี้ เขาต้องการดูธุรกรรมทั้งหมดสำหรับ 15 บัญชีเหล่านั้น และอื่น ๆ
ฉันคิดว่าโมดูล Access จะทำงานได้ดีที่สุดในสถานการณ์นี้ เนื่องจากฉันเชื่อว่ามีหลายส่วนในเรื่องนี้ ฉันคิดว่าฉันต้องการฟังก์ชันเพื่อวนซ้ำช่วงวันที่และสำหรับแต่ละวัน: 1. นับหมายเลขบัญชีเพียงครั้งเดียว 2. คืนธุรกรรมทั้งหมดเป็น 25% ของบัญชีทั้งหมด
แต่อย่างที่ผมบอกไป ผมไม่ใช่โปรแกรมเมอร์ และผมเหนื่อยหน่ายกับการค้นหาวิธีแก้ปัญหาที่เป็นไปได้สำหรับหลายๆ ส่วน