กระทู้เก่าบอร์ด อ.Yeadram
3,873 1
URL.หัวข้อ /
URL
SQL ถามการ QUERY ช่วงเวลา
ข้อมูลครับ
Table aaa
code name date
a x1 12/01/11
a x1 15/01/11
a x1 05/02/11
b x2 01/01/11
b x2 05/03/11
ต้องการ Query ว่า มี code ใหนบ้าง ที่มี nameเหมือนกัน และมีวันที่ห่างกันไม่เกิน 30 วัน
เช่น คำตอบ
a x1 12/01/51 15/01/11 3 (ห่างกัน 3 วัน)
a x1 15/01/11 02/02/11 17
b x2 (ห่างกันเกิน 30 วัน ไม่ต้องแสดง)
ต้องสั่ง SQL ว่าอย่างไรบ้างครับ
Table aaa
code name date
a x1 12/01/11
a x1 15/01/11
a x1 05/02/11
b x2 01/01/11
b x2 05/03/11
ต้องการ Query ว่า มี code ใหนบ้าง ที่มี nameเหมือนกัน และมีวันที่ห่างกันไม่เกิน 30 วัน
เช่น คำตอบ
a x1 12/01/51 15/01/11 3 (ห่างกัน 3 วัน)
a x1 15/01/11 02/02/11 17
b x2 (ห่างกันเกิน 30 วัน ไม่ต้องแสดง)
ต้องสั่ง SQL ว่าอย่างไรบ้างครับ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
Time: 0.2604s
สมมุติให้เทเบิลชื่อว่า T ดังนั้น SQL ที่ใช้ก็คือ
select T1.code, T1.date, (select min(T2.date) from T as T2
where (T2.code = T1.code)
and (T2.name = T1.name)
and (T2.date > T1.date)) as nextdate
from T as T1
where DateDiff("d",T1.date,
(select min(T2.date) from T as T2
where (T2.code = T1.code)
and (T2.name = T1.name)
and (T2.date > T1.date))) >= 3
ตรงนี้คือส่วนที่หาวันที่ถัดไป นั่นคือวันที่ที่น้อยที่สุดที่มากกว่าวันที่ในเรคอร์ดนี้ โดยที่มี code และ name เหมือนกับในเรคอร์ดนี้ด้วย
select min(T2.date) from T as T2
where (T2.code = T1.code)
and (T2.name = T1.name)
and (T2.date > T1.date)
อย่าลอกไปโดยไม่เอาไปศึกษานะครับ กรุณาไปอ่านทำความเข้าใจด้วยว่าทำไมถึงเป็นอย่างนี้ มันทำงานอย่างไร ตรงไหนไม่เข้าใจให้มาถามใหม่ครับ