 |
|
VB.NET สอบถามเรื่อง select ข้อมูลจากตารางนึงออกมาคำนวณ แล้วaddใส่อีกตารางครับ |
|
 |
|
|
 |
 |
|
ถ้ารู้คำสั่ง INSERT SELECT จะเขียนได้ง่ายมากเลยครับ เช่น
Code (SQL)
INSERT INTO table2 (CustomerID,Amount
SELECT CustomerID,SUM(Amount) AS Amount FROM table2 WHERE CountryCode = 'TH' GROUP BY CustomerID
SQL INSERT ... SELECT
|
 |
 |
 |
 |
Date :
2016-01-23 23:15:44 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมลองวิธีนั้นแล้วครับ แต่มันเป็นการคำนวณใน field เดียว ผมเข้าใจถูกรึเปล่าครับ
ผมอยากได้แบบนี้ครับ
ในแต่ละ Row
เอา field ที่ 3 มาคูณ field ที่ 4
เอา field ที่ 5 มาเปรียบเทียบหาปีที่ผ่านมา
เอา field ที่ 6 มาลบ field ที่ 8
ซึ่งในตารางมีข้อมูล 10 Row ต้องเอาออกมาคำนวณทีละ Row
จากนั้นก็ Add ลงอีกตารางที่ละ Row อะครับ
ผมอาจจะอธิบาย งงๆ ข้ออภัยด้วยครับ

|
ประวัติการแก้ไข 2016-01-24 09:04:42
 |
 |
 |
 |
Date :
2016-01-24 09:03:43 |
By :
arnopark |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบไม่ตรงคำถาม/ถามไม่ตรงคำตอบ
ลองทำความเข้าใจดูครับ
Code (SQL)
--อัตราค่าเสื่อม = 100%/จำนวนปี
--4.วิธีลดลงทุกปี (Reducing-Charge Method) การคิดค่าเสื่อมราคาวิธีนี้การคำนวณราคาในอัตราเร่ง คือปีแรก
-- กิจการจะได้รับผลประโยชน์มากกว่าปีหลัง ๆ ทำให้ค่าเสื่อมราคาในปีแรก ๆ สูงกว่าปีหลัง
--1) วิธีลดลงตามลำดับ (Double Declining Balance Method)
-- เป็นการคิดค่าเสื่อมราคาจากยอดคงเหลือในบัญชี สินทรัพย์คือราคาตามบัญชี การคำนวณจะไม่นำราคาซากมาเกี่ยวข้อง
-- ตัวอย่าง 25×1 ม.ค. 1 เครื่องจักรราคา 200,000 บาท ประมาณว่าจะใช้งาน 5 ปี้
-- จะขายเป็นเศษเหล็กได้ 5,000 บาท
--Double Declining Balance Method
DECLARE @Assets TABLE (ID INT, PurchaseCost MONEY, Period INT)
DECLARE @DBFactor INT
SET @DBFactor = 2 -- 2=Double Declining Balance
INSERT INTO @Assets
--SELECT 1, 20000, 48 -- สี่สิบแปดเดือน
--UNION ALL
--SELECT 2, 30000, 60 -- หกสิบเดือน
--UNION ALL
SELECT 3, 200000, 60
;WITH DBDepSched (AssetID, [Month], Period -- Asset base
,DBDepAmt, DBBookValue, DBCumDep -- Declining Balance Depreciation Method
) AS (
SELECT ID, 0, Period
,ROUND(2*PurchaseCost/Period, 2) -- Declining Balance Depreciation Amount
,PurchaseCost, CAST(0 AS MONEY)
FROM @Assets
UNION ALL
SELECT AssetID, NextMo, Period
,CASE WHEN [Month] = MidPeriod THEN ROUND(DBBookValue/MidPeriod, 2)
WHEN NextMo = Period THEN DBBookValue
WHEN [Month] > MidPeriod THEN DBDepAmt
WHEN YE = 1 THEN ROUND(@DBFactor*DBBookValue/Period, 2)
ELSE DBDepAmt END
,CASE WHEN [Month] = MidPeriod THEN DBBookValue - ROUND(DBBookValue/MidPeriod, 2)
WHEN NextMo = Period THEN CAST(0 AS MONEY)
WHEN [Month] > MidPeriod THEN DBBookValue - DBDepAmt
WHEN YE = 1 THEN DBBookValue - ROUND(@DBFactor*DBBookValue/Period, 2)
ELSE DBBookValue - DBDepAmt END
,CASE WHEN [Month] = MidPeriod THEN DBCumDep + ROUND(DBBookValue/MidPeriod, 2)
WHEN NextMo = Period THEN DBCumDep + DBBookValue
WHEN [Month] > MidPeriod THEN DBCumDep + DBDepAmt
WHEN YE = 1 THEN DBCumDep + ROUND(@DBFactor*DBBookValue/Period, 2)
ELSE DBCumDep + DBDepAmt END
FROM DBDepSched
CROSS APPLY (SELECT NextMo=[Month]+1, MidPeriod=Period/2, YE=([Month]+1)/12) x
WHERE [Month] < Period
)
SELECT * --AssetID, [Month], DBDepAmt, DBBookValue, DBCumDep
FROM DBDepSched
ORDER BY AssetID, [Month]
|
 |
 |
 |
 |
Date :
2016-01-24 11:10:55 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าแค่เอาข้อมูลหนึ่งมาลงอีก database ก็ไม่น่าจะต้องลงใหม่เลยนี่ครับ
จะทำให้ทำงานตั้ง 3 รอบ
1. รอบที่ select ข้อมูลมาลง datagrid
2. รอบที่ เอาข้อมูลลงใน database
3. รอบที่ select ข้อมูลจาก database ตัวใหม่ มาลง datagrid
ทั้งนี้ยังไม่รวมที่จะต้อง Update Delete ข้อมูลเก่า ต้องมานั่ง set ค่าข้อมูลที่เรา ลงใน database ตัวใหม่นี่อีก
ถ้าจะดูแค่ผลเฉยๆก็เอาแบบบ้านๆเลยก็ได้ครับแค่
1. รอบที่ select เรียงตามปี หรือ name+year ข้อมูลมาลง datagrid(แบบนี้ก็เรียงกันแล้วครับ)
2. รอบที่ select ข้อมูลจาก datagrid แรก มาลง datagrid ตัวใหม่
เพราะมองดูแล้วเหมือนแค่เอาข้อมูลเก่ามาเปรียบเทียบผลแค่นั้นเอง
ส่วน
"ผมอยากได้แบบนี้ครับ
ในแต่ละ Row
เอา field ที่ 3 มาคูณ field ที่ 4
เอา field ที่ 5 มาเปรียบเทียบหาปีที่ผ่านมา
เอา field ที่ 6 มาลบ field ที่ 8
ซึ่งในตารางมีข้อมูล 10 Row ต้องเอาออกมาคำนวณทีละ Row
จากนั้นก็ Add ลงอีกตารางที่ละ Row อะครับ"
ก็ for loop ใน datagrid แรก มาลงใน datagrid ที่สอง ก็ได้แล้วครับ
ค้อนแซบ ก็ตามที่ จขกท. ออกแบบไว้ได้เลยครับ
แค่ต้องดึงมันมาเป็นโค้ดแค่นั้นเอง
ลดการถ่ายโอนข้อมูล เพิ่มการใช้ Index key ก็เท่ากับลดปัญหาที่จะตามมาภายหลังครับ
|
 |
 |
 |
 |
Date :
2016-01-25 08:19:50 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|