Я сформировал представление из нескольких таблиц. Это представление содержит, например, столбцы Номер заказа, Имя и Дата / время.
НА ПРИМЕРЕ
Оригинал:
| Order number | Name | Datetime |
|-------------: |-------- |------------------------- |
| -1094 | Bob | 2019-04-02 12:58:56.000 |
| -1989 | Anna | 2018-03-27 09:13:53.000 |
| -43 | Peter | 2018-04-16 10:20:40.000 |
| -1094 | Dieter | 2017-12-30 11:28:23.000 |
| -1094 | Sabi | 2019-04-02 12:58:56.000 |
Я написал функцию, которая добавляет имена и возвращает их мне.
Проблема в том, что для отображения результатов запроса требуется много времени.
Около 1000 записей занимает около 1 часа. Это слишком медленно.
Я надеюсь, что вы можете дать мне несколько советов о том, как улучшить функцию или совершенно другое решение.
USE [****]
GO
/****** Object: UserDefinedFunction [dbo].[*_***_sfGetProjectName] Script Date: 19.06.2019 14:03:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[*_***_sfGetProjectName](@starttime datetime) RETURNS VARCHAR(MAX)
BEGIN
DECLARE tmpCursor CURSOR FOR SELECT Projektname FROM dbo.*_***_Sollzeit_Istzeit2 WHERE Startzeit = @starttime
DECLARE @tmpProjectName VARCHAR(MAX)
DECLARE @ReturnProjectName VARCHAR(MAX)
DECLARE @tmpCursorRows INTEGER
SET @tmpProjectName = ''
SET @ReturnProjectName = ''
SET @tmpCursorRows = 0
OPEN tmpCursor
SET @tmpCursorRows = @@CURSOR_ROWS
FETCH NEXT FROM tmpCursor INTO @tmpProjectName
WHILE @@FETCH_STATUS = 0
BEGIN
IF @tmpCursorRows > 1
BEGIN
SET @ReturnProjectName = @ReturnProjectName + '_' + @tmpProjectName
END
ELSE
BEGIN
SET @ReturnProjectName = @tmpProjectName
END
FETCH NEXT FROM tmpCursor INTO @tmpProjectName
END
CLOSE tmpCursor
DEALLOCATE tmpCursor
RETURN @ReturnProjectName
END;
Я хочу добавить все имена, для которых значение столбца Datetime равно.
Результат:
| Order number | Name | Datetime |
|-------------: |---------- |------------------------- |
| -1094 | Bob_Sabi | 2019-04-02 12:58:56.000 |
| -1989 | Anna | 2018-03-27 09:13:53.000 |
| -43 | Peter | 2018-04-16 10:20:40.000 |
| -1094 | Dieter | 2017-12-30 11:28:23.000 |