Мне нужно вытащить данные из двух таблиц: Neptune_FN_Analysis
и Neptune_prem
Будет 3 поля с именами readings_miu_id
(сравнимо с именем человека или номером товара), ReadDate
, ReadTime
(все из которых находятся в Neptune_FN_Analysis
). Некоторые readings_miu_id
s имеют несколько ReadTime
s в течение нескольких дней, но я хочу использовать только "последний раз", введенный для readings_miu_id
, в день.
Мне нужны все readings_miu_id
с датой входа для выбранного диапазона, но только последней ReadTime
, введенной для каждой записи, которую я извлекаю.
Мое решение, основанное на одной таблице:
SELECT readings_miu_id, Reading, ReadDate, ReadTime, MIUwindow, SN, Noise, RSSI, OriginCol, ColID, Ownage
FROM analyzed AS A
WHERE ReadDate Between #4/21/2009# and #4/29/2009#
AND ReadTime=
(SELECT TOP 1 analyzed.ReadTime FROM analyzed
where analyzed.readings_miu_id = A.readings_miu_id
AND analyzed.ReadDate = A.ReadDate
ORDER BY analyzed.ReadTime DESC);
Когда я пытаюсь адаптировать это решение, я не могу выполнить FROM [tableName] as A, INNER JOIN
, потому что это дает мне ошибку. Исходный код, созданный моим предшественником (который я пытаюсь адаптировать / исправить), выглядит следующим образом:
SELECT readings_miu_id, Reading, ReadDate,Format([MIUtime],'hh:mm:ss') AS
ReadTime, MIUwindow, SN, Noise, RSSI, ColRSSI, MIURSSI, Firmware, CFGDate, FreqCorr,
Active, MeterType, OriginCol, ColID, Ownage, SiteID, PremID, Neptune_prem.prem_group1,
Neptune_prem.prem_group2, ReadID
INTO analyzed
FROM Neptune_FN_Analysis INNER JOIN
Neptune_prem ON Neptune_FN_Analysis.PremID = Neptune_prem.premice_id
WHERE SiteID = 36801 and ReadDate BETWEEN #04/21/09# AND #04/27/09#
and OriginCol = 'US 29' and ColID = 1 and ColID <> 0 and Active = 'Y'