กระทู้เก่าบอร์ด อ.Yeadram
1,659 10
URL.หัวข้อ /
URL
เรื่อง IIf และ ผลบวกสะสมครับ
คือผมมีคิวรีดังนี้ครับ
Week Available Commulative
1 15 15
2 -5 10
3 -5 5
4 -5 0
5 -5 -5
6 -5 -10
7 -5 -15
8 -15 -30
9 -15 .
10 -15 .
11 -15 .
12 -15 .
เนื่องจากมี lot size ทำการเก็บค่าอยู่ที่เทเบิ้ล อื่นซึ่งมีเพียง 1 record
เพราะผมต้องการที่จะให้ lot size มันเปลี่ยนได้ตลอดครับ
ผลลัพที่ผมต้องการคือ
Week Total Lot size
1 15
2 10
3 5
4 30 (5-5+30) 30
5 25
6 20
7 5
8 20 (5-15+30) 30
9 5
10 20 30
11 5
12 20 30
โดยที่ผมเขียนคำสั่ง sql ดังนี้ครับ
SELECT MPS3.Week, MPS3.Available2, (SELECT Sum(MPS3.Available2) From MPS3 Where MPS3.Week <= B.Week) AS CumulativeTotal, MPS2.[Lot Size]
FROM MPS2 INNER JOIN (MPS3 AS B INNER JOIN MPS3 ON B.Week=MPS3.Week) ON (MPS2.Week=B.Week) AND (MPS2.Week=MPS3.Week)
ORDER BY MPS3.Week;
ไม่ทราบผมต้องใช้คำสั่ง IIf แบบไหนจึงจะได้ผลลัพท์ตามที่ต้องการครับ
ขอบพระคุณครับ
Week Available Commulative
1 15 15
2 -5 10
3 -5 5
4 -5 0
5 -5 -5
6 -5 -10
7 -5 -15
8 -15 -30
9 -15 .
10 -15 .
11 -15 .
12 -15 .
เนื่องจากมี lot size ทำการเก็บค่าอยู่ที่เทเบิ้ล อื่นซึ่งมีเพียง 1 record
เพราะผมต้องการที่จะให้ lot size มันเปลี่ยนได้ตลอดครับ
ผลลัพที่ผมต้องการคือ
Week Total Lot size
1 15
2 10
3 5
4 30 (5-5+30) 30
5 25
6 20
7 5
8 20 (5-15+30) 30
9 5
10 20 30
11 5
12 20 30
โดยที่ผมเขียนคำสั่ง sql ดังนี้ครับ
SELECT MPS3.Week, MPS3.Available2, (SELECT Sum(MPS3.Available2) From MPS3 Where MPS3.Week <= B.Week) AS CumulativeTotal, MPS2.[Lot Size]
FROM MPS2 INNER JOIN (MPS3 AS B INNER JOIN MPS3 ON B.Week=MPS3.Week) ON (MPS2.Week=B.Week) AND (MPS2.Week=MPS3.Week)
ORDER BY MPS3.Week;
ไม่ทราบผมต้องใช้คำสั่ง IIf แบบไหนจึงจะได้ผลลัพท์ตามที่ต้องการครับ
ขอบพระคุณครับ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R12705
ขอโทษนะครับโค้ดมันวางไม่ได้ รูปก็เล็ก ผมเลยอัพไฟล์มาแทนครับ
http://www.mediafire.com/download.php?8uucr6giqgzrgh4
http://www.mediafire.com/download.php?8uucr6giqgzrgh4
3 @R12706
อ๋อผมเข้าใจแล้วครับ คือ ตอนนี้มันทำแค่ ลูปเดียว มันไม่วนลูปครับ ต้องทำอย่างไงดีครับ
4 @R12708
ช่วยเหลือผมด้วยนะครับ
5 @R12713
ต้องทำยังไงครับมันถึงจะวนลูปต่อไปเรื่อยๆ
IIf((SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week)>1,(SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week),(SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week)+MPS2.[Lot Size]) AS Available
ปัญหาของมันน่าจะมาจาก ผมบวก lot size เข้า ซึ่ง lot size ไม่ได้เกิดมาจากผลบวกสะสม
IIf((SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week)>1,(SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week),(SELECT Sum(MPS3.Available2) As Available2 From MPS3 Where MPS3.Week <= B.Week)+MPS2.[Lot Size]) AS Available
ปัญหาของมันน่าจะมาจาก ผมบวก lot size เข้า ซึ่ง lot size ไม่ได้เกิดมาจากผลบวกสะสม
6 @R12717
ไม่ว่างอ่านรายละเอียดครับ แต่เห็นว่าพยายามดี
ลองดูที่ http://www.thai-access.com/yeadram_view.php?topic_id=2723
ว่าใกล้เคียงหรือเปล่า
แล้วว่างจะกลับมาเยี่ยมครับ
ลองดูที่ http://www.thai-access.com/yeadram_view.php?topic_id=2723
ว่าใกล้เคียงหรือเปล่า
แล้วว่างจะกลับมาเยี่ยมครับ
7 @R12719
ไม่ค่อยใกล้เคียงครับอาจารย์ ขอบคุณครับยังไงอาจารย์ก็ช่วยแวะมาดูให้ผมด้วยนะครับ ยังแก้ไม่ได้เลยขอบคุณครับ
8 @R12724
อ่านแล้วไม่ค่อยเข้าใจ ของ ตัวอย่างข้อมูลแต่ละ table ด้วยดีกว่าครับ
9 @R12727
ผมสร้าง table มา 2 table
อันแรกชื่อ Order มี 7 ฟิลด์ ประกอบไปด้วย Week(มี 12 week),Forecast(สร้างฟอร์มขึ้นมาเพื่อใช้ป้อนค่า),
Order(สร้างฟอร์มขึ้นมาเพื่อใช้ป้อนค่าเช่นกัน),Available,ATP,MPS,On hand
จากนั้นสร้างอีก Table นึงขึ้นมาเทเบิ้ลนี้ใช้แค่ประกอบการคำนวณครับ ใช้ชื่อว่า MPS2
โดยมีอยู่ 3 ฟิลด์ Week(ที่สร้างขึ้นมาเพื่อให้มันมี 12 จะได้สร้างquery แล้วjoinได้ครับ),Beginning Inventory,Lot Size
วิธีคำนวณที่ผมต้องการเป็นดังนี้ครับ Lot Size = 30
Week Forecast Order Available ATP MPS On hand
1 5 5 15(20-5) 10(20-5+3+2) 20(Beginning Inventory)
2 5 3 10
3 5 2 5
4 5 0 30(5-5+30) 30 30
5 5 0 25
6 5 0 20
7 15 0 5
8 15 0 20(5-15+30) 30 30
9 15 0 5
10 15 0 20(5-15+30) 30 30
11 15 0 5
12 15 0 20(5-15+30) 30 30
จากนั้นผมจึงสร้างคิวรีชื่อ MPS3 โดยเชื่อมเขตข้อมูลดังนี้
SELECT [Order Demand].Week, [Order Demand].Forecast, [Order Demand].Order, [MPS2].[Beginning Inventory]-[Order Demand].[Forecast] AS Available2, [Order Demand].ATP, [Order Demand].MPS, [Order Demand].[On Hand], MPS2.[Beginning Inventory]
FROM MPS2 INNER JOIN [Order Demand] ON MPS2.Week=[Order Demand].Week;
แล้วได้
Week Forecast Order Available2 ATP MPS Beginning Inventory
1 5 5 15 20
2 5 3 -5 0
3 5 2 -5 0
4 5 0 -5 0
5 5 0 -5 0
6 5 0 -5 0
7 15 0 -15 0
8 15 0 -15 0
9 15 0 -15 0
10 15 0 -15 0
11 15 0 -15 0
12 15 0 -15 0
ผมเอา Forecast - Beginning Inventory ก่อนนะครับ
หลังจากนั้นผมก็สร้างมาอีกหนึ่งคิวรี ชื่อ MPS4
โดยใช้โค้ดแบบที่อัพโหลดให้ดูด้านบน
แล้วได้
Week Available2 Available Lot Size
1 15 15 30
2 -5 10 30
3 -5 5 30
4 -5 30 30
5 -5 25 30
6 -5 20 30
7 -15 5 30
8 -15 -10 30
9 -15 -25 30
10 -15 -40 30
11 -15 -55 30
12 -15 -70 30
ซึ่งผมอยากได้ผลลัพธ์เหมือนด้านบนแต่ผมไม่รู้ว่าที่ผมทำถูกรึปล่าว ผมกะไว้ว่าเมื่อคำนวณค่าได้
ค่อยอัพเดทค่าไปใส่รวมกันครับแต่มันติปัญหาตรงที่ผมไม่ค่อยเชี่ยวชาญเท่าไหร่
รบกวนอาจารย์แนะนำผมหน่อยนะครับ ขอบพระคุณครับ
อันแรกชื่อ Order มี 7 ฟิลด์ ประกอบไปด้วย Week(มี 12 week),Forecast(สร้างฟอร์มขึ้นมาเพื่อใช้ป้อนค่า),
Order(สร้างฟอร์มขึ้นมาเพื่อใช้ป้อนค่าเช่นกัน),Available,ATP,MPS,On hand
จากนั้นสร้างอีก Table นึงขึ้นมาเทเบิ้ลนี้ใช้แค่ประกอบการคำนวณครับ ใช้ชื่อว่า MPS2
โดยมีอยู่ 3 ฟิลด์ Week(ที่สร้างขึ้นมาเพื่อให้มันมี 12 จะได้สร้างquery แล้วjoinได้ครับ),Beginning Inventory,Lot Size
วิธีคำนวณที่ผมต้องการเป็นดังนี้ครับ Lot Size = 30
Week Forecast Order Available ATP MPS On hand
1 5 5 15(20-5) 10(20-5+3+2) 20(Beginning Inventory)
2 5 3 10
3 5 2 5
4 5 0 30(5-5+30) 30 30
5 5 0 25
6 5 0 20
7 15 0 5
8 15 0 20(5-15+30) 30 30
9 15 0 5
10 15 0 20(5-15+30) 30 30
11 15 0 5
12 15 0 20(5-15+30) 30 30
จากนั้นผมจึงสร้างคิวรีชื่อ MPS3 โดยเชื่อมเขตข้อมูลดังนี้
SELECT [Order Demand].Week, [Order Demand].Forecast, [Order Demand].Order, [MPS2].[Beginning Inventory]-[Order Demand].[Forecast] AS Available2, [Order Demand].ATP, [Order Demand].MPS, [Order Demand].[On Hand], MPS2.[Beginning Inventory]
FROM MPS2 INNER JOIN [Order Demand] ON MPS2.Week=[Order Demand].Week;
แล้วได้
Week Forecast Order Available2 ATP MPS Beginning Inventory
1 5 5 15 20
2 5 3 -5 0
3 5 2 -5 0
4 5 0 -5 0
5 5 0 -5 0
6 5 0 -5 0
7 15 0 -15 0
8 15 0 -15 0
9 15 0 -15 0
10 15 0 -15 0
11 15 0 -15 0
12 15 0 -15 0
ผมเอา Forecast - Beginning Inventory ก่อนนะครับ
หลังจากนั้นผมก็สร้างมาอีกหนึ่งคิวรี ชื่อ MPS4
โดยใช้โค้ดแบบที่อัพโหลดให้ดูด้านบน
แล้วได้
Week Available2 Available Lot Size
1 15 15 30
2 -5 10 30
3 -5 5 30
4 -5 30 30
5 -5 25 30
6 -5 20 30
7 -15 5 30
8 -15 -10 30
9 -15 -25 30
10 -15 -40 30
11 -15 -55 30
12 -15 -70 30
ซึ่งผมอยากได้ผลลัพธ์เหมือนด้านบนแต่ผมไม่รู้ว่าที่ผมทำถูกรึปล่าว ผมกะไว้ว่าเมื่อคำนวณค่าได้
ค่อยอัพเดทค่าไปใส่รวมกันครับแต่มันติปัญหาตรงที่ผมไม่ค่อยเชี่ยวชาญเท่าไหร่
รบกวนอาจารย์แนะนำผมหน่อยนะครับ ขอบพระคุณครับ
10 @R12739
พอจะมีวิธีไหมครับอาจารย์
Time: 0.3157s
ผมเขียนแบบนี้ครับ
แล้วมันได้ผลลัพธ์
Week Available Lot Size
1 15 30
2 10 30
3 5 30
4 30 30
5 25 30
6 20 30
7 5 30
8 -10 30
9 -25 30
10 -40 30
11 -55 30
12 -70 30
คือผมไม่ทราบว่าทำไม่มันไม่ทำตามเงื่อนไขครับ พอถึง -10 แทนที่มันจะบวก 30
เป็น 20 มันกลับไม่บวกครับ แต่กลับ ลบสะสมไปอีก ช่วยผมแก้ไขหน่อยนะครับขอบคุณครับ