Нужно добавить в запрос Count с Group INTO существующий рабочий запрос - PullRequest
1 голос
/ 05 апреля 2019

Цель: Я хочу получить количество повторных назначений WorkItem Из того, что я понимаю, правильный запрос выглядит следующим образом:

SELECT      
    WorkItemDimvw.Id, 
    COUNT(WorkItemAssignedToUserFactvw.WorkItemAssignedToUser_UserDimKey) AS Assignments    
FROM  WorkItemDimvw INNER JOIN  WorkItemAssignedToUserFactvw 
ON WorkItemDimvw.WorkItemDimKey = WorkItemAssignedToUserFactvw.WorkItemDimKey 
GROUP BY WorkItemDimvw.Id

Ниже представлен СУЩЕСТВУЮЩИЙ запрос, и мне интересно / подделка, если мне следует:

  1. Просто добавьте COUNT(WorkItemAssignedToUserFactvw.WorkItemAssignedToUser_UserDimKey) AS Assignments, поскольку объединения существуют, за исключением того, что это группа по WorkItemDimvw.Id
  2. Должен ли он быть подзапросом в списке выбора ниже?

Запрос:

SELECT 
    SRD.ID,
    SRD.Title,
    SRD.Description,
    SRD.EntityDimKey,
    WI.WorkItemDimKey,
    IATUFact.DateKey
FROM 
    SLAConfigurationDimvw 
    INNER JOIN SLAInstanceInformationFactvw 
        ON SLAConfigurationDimvw.SLAConfigurationDimKey = SLAInstanceInformationFactvw.SLAConfigurationDimKey 
    RIGHT OUTER JOIN ServiceRequestDimvw AS SRD 
    INNER JOIN WorkItemDimvw AS WI 
        ON SRD.EntityDimKey = WI.EntityDimKey
    LEFT OUTER JOIN WorkItemAssignedToUserFactvw AS IATUFact 
        ON WI.WorkItemDimKey = IATUFact.WorkItemDimKey 
        AND IATUFact.DeletedDate IS NULL 

1 Ответ

1 голос
/ 05 апреля 2019

Хитрость заключается в агрегировании данных в подзапросе, прежде чем присоединиться к нему.

SELECT 
    SRD.ID,
    SRD.Title,
    SRD.Description,
    SRD.EntityDimKey,
    WI.WorkItemDimKey,
    IATUFact.DateKey,
    IATUFact.Assignments
FROM 
    SLAConfigurationDimvw 
INNER JOIN
    SLAInstanceInformationFactvw 
        ON SLAConfigurationDimvw.SLAConfigurationDimKey = SLAInstanceInformationFactvw.SLAConfigurationDimKey 
RIGHT OUTER JOIN
    ServiceRequestDimvw AS SRD
        ON <you're missing something here>
INNER JOIN
    WorkItemDimvw AS WI 
        ON SRD.EntityDimKey = WI.EntityDimKey
LEFT OUTER JOIN
(
    SELECT
        WorkItemDimKey,
        DateKey,
        COUNT(WorkItemAssignedToUser_UserDimKey) AS Assignments
    FROM
        WorkItemAssignedToUserFactvw
    WHERE
        DeletedDate IS NULL
    GROUP BY
        WorkItemDimKey,
        DateKey
)
    IATUFact
        ON  WI.WorkItemDimKey = IATUFact.WorkItemDimKey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...