2014-01-16 51 views
0

數據SQL在datetime上加入相同的表?

id | name |   ReadingDateTime | RID |   RName |  Value 
173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
173 | OLİMPA | 2013-12-30 13:43:31.000 | 15 | Aktif Endeks T1 | 12444,355 
173 | OLİMPA | 2013-12-31 12:44:29.000 | 15 | Aktif Endeks T1 | 12452,486 
173 | OLİMPA | 2013-12-31 15:14:27.000 | 15 | Aktif Endeks T1 | 12456,518 
173 | OLİMPA | 2013-12-31 17:14:34.000 | 15 | Aktif Endeks T1 | 12459,294 
... 

查詢

SELECT SRA2.Value-SRA.Value AS Diff, SRA.* 
FROM Summary_Reading_All SRA 
INNER JOIN Summary_Reading_All SRA2 ON SRA2.ReadingDateTime = SRA.ReadingDateTime 
WHERE SRA.ReadingTypeId = 15 
AND SRA.DeviceId = 173 
ORDER BY SRA.ReadingDateTime 

輸出

Diff  | id | name |   ReadingDateTime | RID |   RName |  Value 
0   | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
-5978,216 | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
-7807,397 | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
-12414,146 | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
11042,679 | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
-11580,143 | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
-12414,146 | 173 | OLİMPA | 2013-12-27 14:06:39.000 | 15 | Aktif Endeks T1 | 12414,146 
(7 times) 
Diff | 173 | OLİMPA | 2013-12-30 13:43:31.000 | 15 | Aktif Endeks T1 | 12444,355 
(7 times) 
Diff | 173 | OLİMPA | 2013-12-31 12:44:29.000 | 15 | Aktif Endeks T1 | 12452,486 
(7 times) 
Diff | 173 | OLİMPA | 2013-12-31 15:14:27.000 | 15 | Aktif Endeks T1 | 12456,518 
(7 times) 
Diff | 173 | OLİMPA | 2013-12-31 17:14:34.000 | 15 | Aktif Endeks T1 | 12459,294 

我想加入同一個表,並獲得價值領域的差異。當我執行上面的代碼時,然後重複每個記錄7次。爲什麼記錄重複7次,日期時間字段是唯一的。

任何意見,謝謝...

回答

1

繼TheConstructors回答....

SELECT SRA2.Value-SRA.Value AS Diff, SRA.* 
FROM Summary_Reading_All SRA 
INNER JOIN Summary_Reading_All SRA2 ON SRA2.ReadingDateTime = SRA.ReadingDateTime 
AND SRA.ReadingTypeId = SRA2.ReadingTypeId 
AND SRA.DeviceId = SRA2.DeviceId 
WHERE SRA.ReadingTypeId = 15 
AND SRA.DeviceId = 173 
ORDER BY SRA.ReadingDateTime 
+0

感謝,很多......我明白了爲什麼要重複7次。第一個表由deviceId和ReadingTypeId過濾,但不是第二個表。 –

+0

第二個問題:如何獲得價值領域的差異?我想獲得'SRA.Value [1] - SRA.Value [0]'我的代碼是錯誤的獲取它。 –

+0

如何定義獲取SRA.Value [1] - SRA.Value [0]?舉個例子。 –

0

如果ReadingDateTime是獨一無二的,你應該只得到一個行,其中Diff是0,因爲只有行本身可以fullfill查詢的SRA2.ReadingDateTime = SRA.ReadingDateTime一部分。

當前您的WHERE條件僅適用於SRA,但不適用於SRA2。爲了獲得有意義的結果,我想你需要找到一種不符合線條本身的方法;也許通過在SRA2中選擇不同的deviceId或檢查SRA和SRA2之間的主鍵是不同的。