กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
464 5
URL.หัวข้อ /
URL
หัดเขียนAuto Running Number/Running Sum แบบมีเงื่อนไข
ขอขอบคุณทุกท่านที่มีส่วนร่วมในเว็บบอร์ดนี้ ผมมือใหม่จริงๆ เข้ามาอ่านข้อความเกือบทุกข้อที่ โพส รู้เรื่องบ้าง ไม่รู้เรื่องบ้าง อยากขอคำแนะนำ
ผมเพิ่งหัดเขียนคำสั่ง Access โชคดีมาเจอ webboard นี้ ผมลองโหลดเอาตัวอย่าง ข้อ 11 เรื่อง Auto Running Number/Running Sum มาหัดแก้ไข คือถ้าใน Query มีเงื่อนไข เช่นกำหนด Criteria ของ OrderID ที่ลงท้ายด้วย 4 ต้องแก้อย่างไร NO จึงจะRun จาก 1-27 ตามผลทีได้ 27 บันทัด
ผมเพิ่งหัดเขียนคำสั่ง Access โชคดีมาเจอ webboard นี้ ผมลองโหลดเอาตัวอย่าง ข้อ 11 เรื่อง Auto Running Number/Running Sum มาหัดแก้ไข คือถ้าใน Query มีเงื่อนไข เช่นกำหนด Criteria ของ OrderID ที่ลงท้ายด้วย 4 ต้องแก้อย่างไร NO จึงจะRun จาก 1-27 ตามผลทีได้ 27 บันทัด
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R01864
ก็สามารถใช้ Right([OrderID],1) = 4 เข้าช่วยได้เลยครับ
SQL Statement ก็จะคล้ายนี้ครับ
SELECT DISTINCTROW [Order Details].OrderID, Sum(CCur([UnitPrice]*[Quantity]*(1-[Discount])/100)*100) AS Subtotal, (SELECT Sum(CCur([UnitPrice]*[Quantity]*(1-[Discount])/100)*100) FROM [Order Details] AS Temp Where [Temp].[OrderID]<=[Order Details].[OrderID]) AS [Running Sum]
FROM [Order Details]
GROUP BY [Order Details].OrderID, Right([OrderID],1)
HAVING (((Right([OrderID],1))=4));
ดูภาพประกอบข้างล่างนี้นะครับ
2 @R01899
ท่านอาจารย์ค่ะ งง..นิดหน่อยค่ะ
คือคำถามของคุณสมชัย ดูเหมือนเขาจะถามเรื่อง Auto running number
ซึ่งจะเป็นคนละอันกับที่ท่านอาจารย์ตอบคำถาม
อันที่ท่านอาจารย์ตอบจะเป็นเรื่อง Query Running Sum
ซึ่งจะไม่มีลำดับอัตโนมัติอย่างที่คุณสมชัยถาม อ่ะค่ะ
หนูก็อยากรู้เหมือนว่า ถ้ามีเงื่อนไขของ OrderID ที่ลงท้ายด้วย 4
จะสามารถทำให้ Auto running number เริ่มจาก 1-27 ได้อย่างไร
ช่วยตอบอีกครั้งนะคะ
ขอบพระคุณค่ะ
3 @R01900
SQL เดิมในตัวอย่าง ดังนี้ค่ะ
SELECT (Select Count(*) From [Orders] as Temp Where [Temp].[OrderID] < [Orders].[OrderID]+1) AS No, Orders.OrderID, Orders.CustomerID
FROM Orders
ORDER BY Orders.OrderID;
4 @R01904
So sorry. Here you go!
SELECT (Select Count(*) From [Orders] as Temp Where [Temp].[OrderID] < [Orders].[OrderID]+1 And Right([Temp].[OrderID],1)=4) AS No, Orders.OrderID, Orders.CustomerID
FROM Orders
WHERE (((Right([OrderID],1))=4))
ORDER BY Orders.OrderID;
5 @R01907
Very much obliged
Time: 0.1455s