Введите месяц для каждого пользователя - PullRequest
0 голосов
/ 09 мая 2019

привет, это мой SP, чтобы показать ряды пользователей, которые являются Travel Consultant. и теперь я хочу поставить в столбце месяц месяц для каждого пользователя.

Например:

jan | user1| valueX
Jan ! user2| valueX
Jan | user3| valueX
Fev | user1| valueX
Fev | user2| valueX
Fev | user3| valueX

ALTER PROCEDURE [dbo].[SP_UserTC_BY__ProfID_FuncID]
    @P_ProfileName nvarchar(50)

    --SET @P_FunctionID = 1
    AS
        IF @P_ProfileName is null
            RAISERROR('Null values not allowed for @P_ProfileName', 16,1)

    BEGIN

    SELECT users.UserID, salesobj.Month, users.Name, prof.ProfileName, funct.Name as FunctionName, salesobj.SalesObjectiveMonth, salesobj.GrossMargin, salesobj.ReductionWorkingTime,salesobj.ConversionRate, salesobj.ReductionOnPace
    FROM TBL_User as users join  REL_ProfileUser as relprofileuser
    on users.UserID = relprofileuser.UserID
    join TBL_Profile as prof on prof.ProfileID = relprofileuser.ProfileID
    join TBL_UserFunction as funct on funct.FunctionID = relprofileuser.FunctionID
    FULL OUTER JOIN TBL_SalesObjective as salesobj on salesobj.UserID = users.UserID

    WHERE prof.ProfileName = @P_ProfileName and users.IsActive = 1
    END

что я могу сделать?

1 Ответ

0 голосов
/ 09 мая 2019

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

ALTER PROCEDURE [dbo].[SP_UserTC_BY__ProfID_FuncID]
    @P_ProfileName nvarchar(50)
--SET @P_FunctionID = 1
AS
    IF @P_ProfileName is null
        RAISERROR('Null values not allowed for @P_ProfileName', 16,1);

BEGIN
    WITH cteUsers AS(
        SELECT *
        FROM TBL_User as users
        CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12))x(Month) /*this can be changed to names if needed*/
    )
    SELECT users.UserID, 
            salesobj.Month, 
            users.Name, 
            prof.ProfileName, 
            funct.Name as FunctionName, 
            salesobj.SalesObjectiveMonth, 
            salesobj.GrossMargin, 
            salesobj.ReductionWorkingTime,
            salesobj.ConversionRate, 
            salesobj.ReductionOnPace
    FROM cteUsers                as users 
    join  REL_ProfileUser        as relprofileuser on users.UserID     = relprofileuser.UserID
    join TBL_Profile             as prof           on prof.ProfileID   = relprofileuser.ProfileID
    join TBL_UserFunction        as funct          on funct.FunctionID = relprofileuser.FunctionID
    LEFT JOIN TBL_SalesObjective as salesobj       on salesobj.UserID  = users.UserID
                                                  and salesobj.Month   = users.Month
    WHERE prof.ProfileName = @P_ProfileName 
    and users.IsActive = 1;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...