我有兩個表命名的字符串和浮動計數行上JOIN
String
| DateAndTime | Val |
---------------------------------------------
| 2016-07-26 18:35:31.000 | AX2 |
| 2016-07-26 18:30:31.000 | G27 |
| 2016-07-26 18:25:31.000 | AX2 |
| 2016-07-26 18:20:31.000 | AX2 |
| 2016-07-26 18:20:31.000 | G27 |
Float
| DateAndTime | Val | Marker |
------------------------------------------------------
| 2016-07-26 18:31:31.000 | 234 | X |
| 2016-07-26 18:26:31.000 | 612 | y |
| 2016-07-26 18:21:31.000 | 12 | a |
| 2016-07-26 18:21:31.000 | 123 | f |
從這兩個表我想從字符串表中的每個Val
已經發生在最小和最大日期過去24小時並顯示該信息。我也想計算插入到每個Val
的最小和最大時間之間的浮動表中的每一行,並將其顯示在一邊。
以下是我的查詢。查詢StringTable
的部分工作得很好,我得到了我期望的結果。然後我試着在Float表上做一個JOIN
並計算行數。
SELECT
S.Batch,
COUNT(F.DateAndTime) AS DataPointsRecorded,
S.CycleStart,
S.LastRecordedTime
FROM
(
SELECT DISTINCT
Val AS Batch,
MIN(DateAndTime) AS CycleStart,
MAX(DateAndTime) AS LastRecordedTime
FROM dbo.StringTable
WHERE DATEDIFF(HOUR,DateAndTime, GETDATE()) < 24
AND Val IS NOT NULL
GROUP BY Val
) S
JOIN dbo.FloatTable F ON S.CycleStart = F.DateAndTime
GROUP BY S.Batch, S.CycleStart, S.LastRecordedTime
ORDER BY CycleStart desc, Batch
這導致每個DataPointsRecorded
出現爲每行相同的確切數字。
然後我改變了我如何使用
JOIN dbo.FloatTable F ON F.DateAndTime BETWEEN S.CycleStart AND S.LastRecordedTime
加入了兩個表,並只是導致各行的數據點在非常大的數字。
我的預期結果就像我之前給出的例子那樣。
| Batch | DataPoint | CycleStart | LastRecordedTime |
-----------------------------------------------------------------------------------------------
| AX2 | 4 | 2016-07-26 18:20:31.000 | 2016-07-26 18:35:31.000 |
| G27 | 3 | 2016-07-26 18:20:31.000 | 2016-07-26 18:30:31.000 |
我收回了我的評論,抱歉的混淆。我所在的測試數據庫有一些破損的數據。你的回答確實有助於獲得我期望的結果。謝謝。 – Timmy