กระทู้เก่าบอร์ด อ.Yeadram
961 5
URL.หัวข้อ /
URL
รบกวนช่วยหาค่าผลลบครับ
ช่วยชี้แนะด้วยครับ...ผมมือใหม่ ครับ ใช้แต่ Excel ข้อมูลรายละเอียดเป็นข้อมูลของคนไข้ 1 คน ที่มาเจาะเลือดหาค่า Lab ในช่วงวันที่แพทย์นัด...ผมต้องการหาค่าที่เปลี่ยนแปลง ในการนัดแต่ละครั้ง
ตย.ผป มาครั้งแรก 20/12/05 มีค่า Lab 3.3.ค่าLab_Ch=0 ในวันที่ 17/1/06 lab มีค่า 2.7 ผมอยากให้ ค่า Lab_Ch มีค่าเท่ากับ 3.3 -2.7 คือ 0.6 ครับ... ในทำนองเดียวกันกับวันอื่นๆ ครับ ผมไม่ทราบว่าผมจะสร้าง query อย่างไรครับ
Date | ค่า Lab | Lab_Ch
20/12/05 I3.30 | 0
17/1/06 |2.70 |
7/2/06 |2.30 |
7/3/06 |2.40 |
4/4/06 |2.20 |
12/4/06 |1.90 |
25/4/06 |1.20 |
2/5/06 |1.80 |
15/5/06 |3.90 |
22/5/06 |3.70 |
30/5/06 |3.50 |
14/6/06 |1.7 |
ตย.ผป มาครั้งแรก 20/12/05 มีค่า Lab 3.3.ค่าLab_Ch=0 ในวันที่ 17/1/06 lab มีค่า 2.7 ผมอยากให้ ค่า Lab_Ch มีค่าเท่ากับ 3.3 -2.7 คือ 0.6 ครับ... ในทำนองเดียวกันกับวันอื่นๆ ครับ ผมไม่ทราบว่าผมจะสร้าง query อย่างไรครับ
Date | ค่า Lab | Lab_Ch
20/12/05 I3.30 | 0
17/1/06 |2.70 |
7/2/06 |2.30 |
7/3/06 |2.40 |
4/4/06 |2.20 |
12/4/06 |1.90 |
25/4/06 |1.20 |
2/5/06 |1.80 |
15/5/06 |3.90 |
22/5/06 |3.70 |
30/5/06 |3.50 |
14/6/06 |1.7 |
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R20167
อย่างแรกเลย ฟิลด์วันที่ ต้องมี data type เป็น Date/Time ก่อนนะครับ ถ้าเป็น Text มันก็จะไม่เหมาะสม เพราะมันเรียงลำดับไม่ได้ ยกเว้นเป็น Text แล้วคุณป้อนข้อมูลเป็น ปีเดือนวัน เช่น 060530 (30 พค. 2006) เป็นต้น
ผมขอสมมุติว่าฟิลด์วันที่ชื่อว่า D, ฟิลด์ค่าแลปชื่อว่า L และผลของค่าแตกต่างชื่อว่า C เทเบิลชื่อว่า T และเงื่อนไขคือใน 1 วันต้องไม่มีการตรวจ 2 ครั้ง ดังนั้นคิวรี่ที่จะเกิดขึ้นก็คือ
select T1.D, T1.L, nz((select T2.L from T as T2 where T2.D = (select max(T3.D) from T as T3 where T3.D < T1.D)) - T1.L,0) as C
from T as T1
order by T1.D
ต้องหมายเหตุเอาไว้ตรงนี้ว่า ถ้าคุณเอาคำแนะนำผมไปใช้แล้วทั้งในคำตอบนี้และคำตอบต่อๆไป(ถ้ามี) มันเป็นความรับผิดชอบของคุณแต่ผู้เดียวที่ต้องทดสอบว่ามันให้ผลลัพธ์ได้อย่างถูกต้องหรือไม่ หากเกิดคุณใช้แล้วมันให้ผลลัพธ์ที่ไม่ถูกต้อง เกิดอันตรายต่อชีวิตคนไข้แล้ว ผมไม่มีส่วนรับผิดชอบใดๆทั้งสิ้นนะครับ
ผมขอสมมุติว่าฟิลด์วันที่ชื่อว่า D, ฟิลด์ค่าแลปชื่อว่า L และผลของค่าแตกต่างชื่อว่า C เทเบิลชื่อว่า T และเงื่อนไขคือใน 1 วันต้องไม่มีการตรวจ 2 ครั้ง ดังนั้นคิวรี่ที่จะเกิดขึ้นก็คือ
select T1.D, T1.L, nz((select T2.L from T as T2 where T2.D = (select max(T3.D) from T as T3 where T3.D < T1.D)) - T1.L,0) as C
from T as T1
order by T1.D
ต้องหมายเหตุเอาไว้ตรงนี้ว่า ถ้าคุณเอาคำแนะนำผมไปใช้แล้วทั้งในคำตอบนี้และคำตอบต่อๆไป(ถ้ามี) มันเป็นความรับผิดชอบของคุณแต่ผู้เดียวที่ต้องทดสอบว่ามันให้ผลลัพธ์ได้อย่างถูกต้องหรือไม่ หากเกิดคุณใช้แล้วมันให้ผลลัพธ์ที่ไม่ถูกต้อง เกิดอันตรายต่อชีวิตคนไข้แล้ว ผมไม่มีส่วนรับผิดชอบใดๆทั้งสิ้นนะครับ
3 @R20169
ชอบพระคุณครับ อจ.สันติ เดี๋ยวจะทดลองดู....อจ.หมายเหตุจนผมสะดุ้งเลย...ใครจะทำร้ายผู้มีพระคุณได้ครับ
4 @R20170
ขอโทษครับพิมพ์ตก อจ.สันติสุข....ผมไม่ทำให้ อจ.ผิดหวังหรอกครับ.....กราบขอบพระคุณอีกครั้งหนึ่งครับ ....หากมีปัญหาจะกลับมาถามใหม่ครับ
5 @R20173
ถ้าดูทุกโพสที่ผมตอบที่เกี่ยวกับรพ.หรือคนไข้ ผมคิดว่าเขียนอย่างนี้เอาไว้ทุกครั้งนะครับ ที่เขียนหมายเหตุเอาไว้ ก็เพราะคนที่จะเอาไปใช้จะได้ระวัง ถ้าเป็นงานในเรื่องที่ไม่เกี่ยวกับชีวิตคนก็ไม่เป็นไร แต่ถ้าเกี่ยวกับชีวิตคน มันต้องระวังสุดๆ ผมเองก็ไม่รู้หรอกว่าผลลัพธ์ที่คุณต้องการ จะเอาไปทำอะไร ก็ต้องเผื่อเอาไว้ดีที่สุดครับ อย่าว่าอย่างนั้นอย่างนี้เลย แม้แต่คนที่เป็นโปรแกรมเมอร์โดยอาชีพ โดยเฉพาะรุ่นเด็กๆ ผมก็เห็นบ่อยๆว่า เขียนเสร็จแล้วก็แล้วไป ไม่ได้ทดสอบอะไร หรือทดสอบนิดๆหน่อยๆ ก็ถือว่าโค้ดทำงานได้สมบูรณ์แล้ว รอมีบักแล้วค่อยแก้ ถ้าเป็นงานทางด้านอื่นอาจไม่เท่าไหร่ แต่แบบนี้อันตรายสำหรับงานด้าน รพ.ครับ
Time: 0.3909s
Miss ก็จำกระทู้ไม่ได้ รอก่อนนะคะที่รัก...