Есть ответы на другие вопросы, подобные этому, но главная проблема здесь в том, что rowID
(objectID
и т. Д.) Нет, так что таблица может быть присоединена самостоятельно.
Мой текущий кодработает нормально, однако, поскольку он должен интерпретироваться INSQL (связанный сервер), по какой-то причине что-либо с ROW_NUMBER()
не будет работать
Интересно, если у кого-то есть опыт в выполнении того же действия, что и код ниже,однако НЕ использовать ROW_NUMBER()
, COUNT(*)
, TOP(*)
или тому подобное?
РЕДАКТИРОВАТЬ: просто упомяните, что из-за ограничений на связанный сервер, любой возможный хитрый трюк должен быть сделан за пределами цитируемого запроса«ВЫБРАТЬ ...» ... Это довольно болезненно: (
Большое спасибо заранее
SELECT TOP 20000
StartQ.DateTime AS StartTime,
EndQ.DateTime AS EndTime,
StartQ.PlyRemaining,
StartQ.PlyTarget,
StartQ.PlyNumber as PlyNumber,
StartQ.PileNumber AS PileNumber,
'ST3P' AS STACKER_ID
FROM
( SELECT TOP 20000 ROW_NUMBER() OVER(ORDER BY [DateTime] ASC) RowNum, *
FROM
OpenQuery(INSQL, 'SELECT [DateTime],
PlyRemaining = [DA2.N_SMSP_ST3P_PLYS_TO_STACK],
PlyTarget = [DA2.N_SMSP_ST3P_PLYS],
PlyNumber = [DA2.N_SMSP_ST3P_PLYS] - [DA2.N_SMSP_ST3P_PLYS_TO_STACK],
PileNumber = [DA2.N_ST3P_PILENUM]
FROM WideHistory
WHERE DateTime > "2011-06-01 00:00:00"
AND DateTime <= "2011-12-12 00:00:00"
AND wwRetrievalMode = "Delta"
') ) StartQ INNER JOIN
(SELECT TOP 20000 ROW_NUMBER() OVER(ORDER BY [DateTime] ASC) RowNum, *
FROM
OpenQuery(INSQL, 'SELECT [DateTime],
PlyRemaining = [DA2.N_SMSP_ST3P_PLYS_TO_STACK],
PlyTarget = [DA2.N_SMSP_ST3P_PLYS],
PlyNumber = [DA2.N_SMSP_ST3P_PLYS] - [DA2.N_SMSP_ST3P_PLYS_TO_STACK],
PileNumber = [DA2.N_ST3P_PILENUM]
FROM WideHistory
WHERE DateTime > "2011-06-01 00:00:00"
AND DateTime <= "2011-12-12 00:00:00"
AND wwRetrievalMode = "Delta"
')
) EndQ ON EndQ.RowNum = StartQ.RowNum + 1
Результаты выглядят как
StartTime EndTime PlyRemaining PlyTarget PlyNumber PileNumber STACKER_ID
------------------- ------------------- ------------ --------- --------- ---------- ----------
2011-06-01 00:18:13 2011-06-01 03:20:25 NULL 0 NULL NULL ST3P
2011-06-01 03:20:25 2011-06-01 03:40:42 0 0 0 NULL ST3P
2011-06-01 03:40:42 2011-06-01 03:40:48 0 0 0 0 ST3P
2011-06-01 03:40:48 2011-06-02 02:30:37 0 0 0 12 ST3P
2011-06-02 02:30:37 2011-06-03 12:25:03 0 0 0 0 ST3P
2011-06-03 12:25:03 2011-06-03 13:58:22 0 0 0 13 ST3P
2011-06-03 13:58:22 2011-06-03 19:29:43 0 0 0 0 ST3P
2011-06-03 19:29:43 2011-06-03 19:49:08 0 0 0 13 ST3P