มันจะยากมากที่จะอธิบายสิ่งนี้ด้วยคำพูด ดังนั้นฉันจะพยายามยกตัวอย่างเล็กๆ น้อยๆ เพื่ออธิบายให้คุณทราบว่าฉันต้องการอะไร:
ตัวอย่างเช่นฉันมีตาราง SQL-Server นี้
+-------+-------+------+
| TestID| Start | End |
+-------+-------+------+
| 1 | DateA | DateB|
| 2 | DateA | DateB|
| 3 | DateA | DateB|
| 4 | DateA | |
+-------+-------+------+
สิ่งที่ฉันต้องการคือตารางนี้:
$ส่วนที่เหลือ = 1,000
+-------+-------+------+----------+-----------+----------+
| TestID| Start | End | Testtime | Totaltime | Resttime |
+-------+-------+------+----------+-----------|----------|
| 1 | DateA | DateB| 214 | 214 | 786 |
| 2 | DateA | DateB| 100 | 314 | 686 |
| 3 | DateA | DateB| 200 | 514 | 486 |
| 4 | DateA | | | | |
+-------+-------+------+----------+-----------+----------+
ฉันมีปัญหาในการทำความเข้าใจสิ่งที่ฉันต้องรวมเข้าด้วยกัน
นี่คือรหัสเพื่อรับตาราง SQL-Server แรก
SELECT TestID, Start, End, DATEDIFF(hour, Start, End) AS Testtime
FROM Testresults
WHERE TesttableID = 1
แต่ละแถวมี TesttableID = 1
ขอบคุณสำหรับความช่วยเหลือ
แก้ไข: เวอร์ชันเซิร์ฟเวอร์ SQL: 9.0.5057
แก้ไข : ฉันได้รับผลลัพธ์แต่ผลลัพธ์ไม่ถูกต้อง สลับเป็น Totaltime และ Resttime
SELECT t1.TestID,
t1.start,
t1.end,
t1.TesttableID,
DATEDIFF(hour,t1.start,t1.end) as Testtime,
(SELECT SUM(DATEDIFF(hour,t2.start,t2.end))
FROM Testresults t2
WHERE t2.TestID <= t1.TestsID AND t2.TesttableID = 1 ) AS Totaltime,
(SELECT 1000-SUM(DATEDIFF(hour,t2.start,t2.end))
FROM Testresults t2
WHERE t2.TestID <= t1.TestIDAND t2.TesttableID = 1 ) AS Resttime FROM Testresults t1 WHERE t1.TesttableID = 1
สิ่งที่ฉันได้รับคือผลลัพธ์เหล่านี้ พวกเขาเปลี่ยน..:
+-------+-------+------+----------+-----------+----------+
| TestID| Start | End | Testtime | Totaltime | Resttime |
+-------+-------+------+----------+-----------|----------|
| 1 | DateA | DateB| 214 | 514 | 486 |
| 2 | DateA | DateB| 100 | 300 | 700 |
| 3 | DateA | DateB| 200 | 200 | 800 |
| 4 | DateA | | | | |
+-------+-------+------+----------+-----------+----------+