В настоящее время у меня есть запрос T-SQL, который вытаскивает список исторических дат счета и задерживает дату с 2 по последний счет с использованием временной таблицы. Дело в том, что мне нужно использовать этот запрос в предварительном процессоре в стороннем приложении, которое не работает с использованием создания и отбрасывания временных таблиц. Есть ли способ написать следующий запрос T-SQL без использования таблицы View или Temp?T-SQL Query for Max Date меньше 1 (без таблицы просмотра или временной таблицы)
SELECT (convert(CHAR(10), dateadd(dd, DateDiff(dd, 0, ltradat), 0), 126)) AS 'DateOnly'
INTO #temp
FROM matter WITH (NOLOCK)
,ledger WITH (NOLOCK)
WHERE mclient = '014134'
AND lmatter = mmatter
AND lzero != 'R'
AND mcurrency LIKE '%'
AND llcode != 'PAY'
GROUP BY ltradat
ORDER BY ltradat
SELECT max(DateOnly)
FROM #temp
WHERE DateOnly < (
SELECT max(DateOnly)
FROM #Temp
)
DROP TABLE #temp
В таблице #Temp приведен список дат выставления счетов и вопросов, связанных с этими фактурами. В элементе select указывается только одна дата счета меньше 1 из списка (отсортировано от самого раннего к самому текущему).
Если я выбираю * от #Temp, я получаю список как:
2016-06-08
2016-07-12
2016-07-26
2016-08-05
2016-09-12
Когда я запускаю заключительную часть запроса T-SQL, я получаю результат, что я требую от:
2016-08-05
Возможно ли получить этот результат из одного запроса без таблицы TEMP или VIEW?
Заранее спасибо.
-Nick
Таблица переменных? КТР? Создать промежуточную таблицу, которую вы усекаете в начале/конце запроса? – dfundako