0
我有第一个需要的查询运行。该查询按周将用户的活动级别聚合到相应的BusinessIds中。需要帮助将第二个查询合并到第一个查询中
为了便于报告,我需要创建一个新列,以捕获每个分组周和BusinessId具有大于0的活动级别的UserIds的数量。第二个查询为我提供了正确的值(尽管它可能比合并后需要的数据点多),但我很难将它合并到我的第一个查询中。
这可能是一个非常直接的努力,但我一直无法从其他问题的样本中找出它。任何帮助表示赞赏。
/* First Query */
SET DATEFIRST 2;
SELECT
SUM(
fua.[RisksAffected]
+fua.[IssuesAffected]
+fua.[ChangesAffected]) AS RIC
,SUM(
fua.[ProjectsCreated]
+fua.[ProjectsAffected]) AS Projects
,CASE
WHEN SUM(fua.[ProjectsCreated]) >0
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT)
END AS ProjectCreated
,SUM(fua.[TimesheetsCreated]) AS Timesheets
,SUM(fua.[ReportsAffected]) AS Reports
,SUM(fua.[FilesAffected]) AS Files
,ud.[BusinessId]
,COUNT (DISTINCT fua.UserId) AS [UserCount]
,DateAdd(day, -1 * datepart(dw,fua.[QueryDate]),fua.[QueryDate]) AS [ActivityDate]
FROM [client_projectmanager].[whs].[FactUserActivity] fua
Left Join [client_projectmanager].[whs].[DimUserDataV2] ud
ON
fua.[UserId] = ud.[UserId]
GROUP BY
DateAdd(day, -1 * datepart(dw,fua.[QueryDate]),fua.[QueryDate]),ud.[BusinessId]
/* Second Query */
SET DATEFIRST 2;
SELECT
count (distinct sela.UserId)
,sela.BusinessId
,DateAdd(day, -1 * datepart(dw,sela.[Date]),sela.Date)
FROM
(SELECT
fua.UserId
,ud.BusinessId
,DateAdd(day, -1 * datepart(dw,fua.[QueryDate]),fua.[QueryDate]) AS [Date]
,SUM(
fua.[RisksAffected]
+fua.[IssuesAffected]
+fua.[ChangesAffected]
+fua.[ProjectsCreated]
+[ProjectsAffected]) AS Acttotal
FROM [client_projectmanager].[whs].[FactUserActivity] fua
Left Join [client_projectmanager].[whs].[DimUserDataV2] ud
ON
fua.[UserId] = ud.[UserId]
GROUP BY
DateAdd(day, -1 * datepart(dw,fua.[QueryDate]),fua.[QueryDate])
,fua.[UserId]
,ud.BusinessId
HAVING
SUM(fua.[RisksAffected]
+fua.[IssuesAffected]
+fua.[ChangesAffected]
+fua.[ProjectsCreated]
+fua.[ProjectsAffected])
>0) sela
GROUP BY
DateAdd(day, -1 * datepart(dw,sela.[Date]),sela.Date)
,sela.BusinessId
ORDER BY DateAdd(day, -1 * datepart(dw,sela.[Date]),sela.Date)
我已经更新了我的代码建议,它似乎工作。谢谢你!如果更高效,我愿意接受其他方法。 SQL不是我的主要焦点,所以我在这方面学到了很多东西。由于我有一些空值,我使用CASE为空值返回0。 – Terry