CHill60
В дополнение к обоснованным комментариям в решениях 1 и 2 Вот еще несколько советов...
1. оставьте форматирование вывода на уровне пользовательского интерфейса, а не на уровне данных ... так что вместо этого
TBLTRANSUSERS.FirstName + ' ' + TBLTRANSUSERS.LastName + '(' + TBLTRANSUSERS.UserCode + ')' as 'User Name'
просто верните все необходимые части и позвольте бизнесу или слою пользовательского интерфейса отформатировать их соответствующим образом.
TBLTRANSUSERS.FirstName, TBLTRANSUSERS.LastName, TBLTRANSUSERS.UserCode
Непосредственным преимуществом этого является то, что ваш код может быть повторно использован в тех случаях, когда вы не хотите объединять поля. Он также будет работать более эффективно.
2. Особенно не преобразования дат в строки в SQL. Очень неэффективно, и это также означает, что вызывающий код должен выполнить преобразование данных обратно на сегодняшний день.
Convert(Varchar(25),AssignedDate,131) as 'Assigned Date',
так и должно быть
AssignedDate as 'Assigned Date',
3. постарайтесь избавиться от привычки использовать пробелы в именах полей ("назначенная дата", "имя пользователя"). Это настоящая Пита, которая использует квадратные скобки для ссылки на имя столбца и может привести к труднодоступным ошибкам, вносимым в ваш код.
4. Будьте последовательны! Вы использовали имена таблиц, чтобы однозначно идентифицировать многие из ваших столбцов
кроме для
AssignedDate
..- с какого стола это доносится? То же самое верно и для столбцов в предложении WHERE. Возможно, вы также захотите рассмотреть возможность использования коротких псевдонимов для таблиц - это сэкономит немного времени на вводе текста, а также может сделать вещи немного понятнее
5. Это
(
SELECT RIGHT('0' + CAST(Datediff(second,AssignedDate,GetDate()) / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((Datediff(second,AssignedDate,GetDate()) / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(Datediff(second,AssignedDate,GetDate()) % 60 AS VARCHAR),2
) as 'Elapsed Time'
это действительно ужасно, но в любом случае относится к слою пользовательского интерфейса. Самое большее верните разницу во времени в секундах, если вам действительно нужно.
Попробуйте применить эти изменения и сравнить отдачу от SQL Profiler (
Запуск SQL Server Profiler | Microsoft Docs[
^] кроме того, здесь есть статьи о CodeProject)