Создание представления функции SQL с идентификатором пользователя и диапазоном дат

Как сказано в заголовке, мне нужно создать представление функций из двух таблиц.

Ниже приведены таблицы SQL

CREATE TABLE User_Specialist(
        ID_User_Specialist      INT         NOT NULL,
        Name_User_Specialist    VARCHAR(50) NOT NULL,

CONSTRAINT PK_ID_User_Specialist    PRIMARY KEY(ID_User_Specialist),
GO

CREATE TABLE Incident(
    ID_Incident                 INT         IDENTITY(1,1)   NOT NULL,
    Incident_Creation_Date      DATETIME                    NULL,
    Assigned_Specialist         INT                         NULL,
    CONSTRAINT FK_Assigned_Specialist   FOREIGN KEY (Especialista_Asignado) REFERENCES Usuario_Especialista(ID_Usuario_Especialista),
GO

Основываясь на предыдущей информации, мне нужна функция для отображения Назначить специалиста и даты создания Инцидент.

Правильно знаю, что у меня есть:

CREATE FUNCTION View_Date (@ID_User_Incident INT)
    RETURNS INT
      AS
        BEGIN 
          DECLARE @Total_Incidents INT
            SELECT @Total_Incidents = COUNT(ID_Incident)
              FROM Incidents i, User_Specialist u
            WHERE i.ID_Incident = u.ID_User_Specialist AND u.ID_User_Specialist =@ID_User_Incident 
          RETURN (@Total_Incidents)
        END
GO

DECLARE @Specialist_ID int;
EXEC @Specialist_ID = [dbo].View_Date
    @ID_Incidentes_Usuarios = 5;
SELECT @Specialist_ID AS 'Assigned Specialist Incidents'
GO

Не хватает только диапазона дат.

Какие СУБД вы используете? (Этот код зависит от продукта.)

jarlh 17.12.2018 11:21

В настоящее время используется SSMS 2017 (SQL Server Management Studio)

Aarón Henríquez 17.12.2018 11:22

@ AarónHenríquez Если вы хотите увидеть общее количество инцидентов, дату первого и последнего инцидента, относящуюся к назначенному специалисту, вам необходимо изменить функцию на Табличную функцию.

Zeki Gumus 17.12.2018 11:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
201
2

Ответы 2

Думаю, этот запрос может вам помочь.

declare @count int = 0 , @dates varchar(200) ='' 
  SELECT  @count+=1 , @dates +=' '+ i.Incident_Creation_Date      
              FROM Incidents i, User_Specialist u
            WHERE i.ID_Incident = u.ID_User_Specialist AND u.ID_User_Specialist =@ID_User_Incident 

            select @count as [count] ,@dates [incidentDates]

Я полагаю, вы изменили свои имена таблиц и полей на английские с испанского. Вы пропустили некоторые из них, в некоторых отсутствовали скобки. Насколько я понимаю, я изменил их, чтобы лучше понять.

CREATE TABLE User_Specialist
(
        ID_User_Specialist      INT         NOT NULL,
        Name_User_Specialist    VARCHAR(50) NOT NULL
        CONSTRAINT PK_ID_User_Specialist  PRIMARY KEY(ID_User_Specialist)
)
GO

CREATE TABLE Incident
(
    ID_Incident                 INT         IDENTITY(1,1)   NOT NULL,
    Incident_Creation_Date      DATETIME                    NULL,
    Assigned_Specialist         INT                         NULL
    CONSTRAINT FK_Assigned_Specialist   FOREIGN KEY (Assigned_Specialist) REFERENCES User_Specialist(ID_User_Specialist)
)
GO

Если вы хотите видеть в результате несколько столбцов или строк, вам необходимо использовать Table-valued Function. Я создал образец запроса из вашей таблицы и подготовил функцию. вы можете изменить его на то, что хотите.

CREATE FUNCTION dbo.FN_ViewDate
(
    @ID_User_Incident INT
)
RETURNS @Result TABLE 
(
     TotalIncidents     INT
    ,FirstIncidentDate  DATETIME
    ,LastIncidentDate   DATETIME
)
AS
BEGIN
    INSERT INTO @Result
    SELECT   COUNT(ID_Incident)
            ,MIN(Incident_Creation_Date)
            ,MAX(Incident_Creation_Date)
    FROM Incident I
    LEFT JOIN User_Specialist U ON I.Assigned_Specialist = U.ID_User_Specialist
    WHERE I.Assigned_Specialist = @ID_User_Incident 

    RETURN 
END
GO

Быстрый вопрос, поскольку я впервые использую таблицу функций. Как вы делаете, чтобы вставить значения, чтобы подтвердить отображаемую информацию в таблице?

Aarón Henríquez 17.12.2018 14:37

@ AarónHenríquez, извини, я не понял вопроса.

Zeki Gumus 17.12.2018 17:11

Другие вопросы по теме