按 2 个不同日期周期进行的 CTE 聚合

问题描述 投票:0回答:0

我有以下示例数据和所需的输出,我编写的 SQL 查询并没有完全产生我正在寻找的结果,我不明白为什么。我尝试过不同的分组,聚合或不聚合“单位”列,但似乎没有任何效果。任何帮助将不胜感激。

样本数据:

EarnedQ

PlannedQ

PeriodQ

SQL:

WITH AggregatedEarnedHours AS (
    SELECT
        WBS,
        ActivityID,
        Period_WE,
        SUM(EarnedMH_I) AS EarnedHours
    FROM
        EarnedQ
    GROUP BY
        WBS,
        ActivityID,
        Period_WE
),
AggregatedPlannedHours AS (
    SELECT
        AID,
        EOW2 AS Period_WE,
        SUM(Units) AS PlannedHours
    FROM 
        PlannedQ T
        JOIN PeriodQ P ON T.Weekending = P.Period_WE
    GROUP BY
        AID,
        EOW2
)
SELECT
    E.WBS,
    E.ActivityID,
    E.Period_WE,
    SUM(E.EarnedHours) AS EarnedHours,
    ISNULL(P.PlannedHours, 0) AS PlannedHours
FROM 
    AggregatedEarnedHours E
LEFT JOIN AggregatedPlannedHours P ON E.ActivityID = P.AID AND E.Period_WE = P.Period_WE
GROUP BY 
    E.WBS,
    E.ActivityID,
    E.Period_WE,
    P.PlannedHours
HAVING (SUM(E.EarnedHours) != 0 OR SUM(P.PlannedHours) !=0) AND 
    SUM(E.EarnedHours) > 0

Desired Output

Current Output

sql sql-server view common-table-expression
© www.soinside.com 2019 - 2024. All rights reserved.