查询使用每周数据按预期工作,但更新为每月时却没有?

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

Here is a photo of my results for each query. 我正在更新一个查询,该查询最初是为每周提供指标而编写的,但是当我将 DATEPART 函数更新为月份时,我现在得到了意想不到的结果。新查询显示了基于每周查询的预期总 Opps 的一半左右。

这是一个很长的查询,但我想展示整个问题,以防遗漏其他内容。似乎与从每周改为每月直接相关

SELECT WEEK AS WEEK
    ,PeriodStart
    ,PeriodEnd
    ,SUM(OPPS) AS Opps
    ,SUM(COMPLETED) AS Completed
FROM (SELECT DB_NAME() AS DB
    ,CAL.Week
    ,PeriodStart AS 'PeriodStart'
    ,PeriodEnd AS 'PeriodEnd'
    ,COUNT(DIARY_OPPS.ENTRY_ID) AS 'Opps'
    ,SUM(CASE WHEN ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE), GETDATE()) <=PeriodEnd THEN 1 ELSE 0 END) AS 'Completed'
FROM (SELECT CAL.Week
        ,MIN(CAL.DATE) AS 'PeriodStart'
        ,MAX(CAL.DATE) AS 'PeriodEnd'
        FROM RM_Util.dbo.EAP_Calendar CAL WITH (NOLOCK)
        WHERE CAL.YEAR = 2022
            AND CAL.Week < DATEPART(wk, GETDATE())
        GROUP BY CAL.Week) CAL
    JOIN RM1.dbo.WPA_DIARY_ENTRY DIARY_OPPS WITH (NOLOCK) ON CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8)) >='01/01/2020'
        AND CAL.PeriodEnd >= CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8))
        --AND CAL.PeriodStart = ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND CAL.PeriodStart <= ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND ISNULL(DIARY_OPPS.AUTO_ID, 0) <> 0
        AND DIARY_OPPS.ATTACH_TABLE = 'CLAIM'
        AND DIARY_OPPS.DIARY_VOID = 0
        AND DIARY_OPPS.DIARY_DELETED = 0
        AND ASSIGNED_USER <> 'admin'
    JOIN RM1.dbo.CLAIM CLAIM_OPPS WITH (NOLOCK) ON DIARY_OPPS.ATTACH_RECORDID = CLAIM_OPPS.CLAIM_ID
        AND CLAIM_OPPS.LINE_OF_BUS_CODE = '243'
GROUP BY CAL.Week
    ,PeriodStart
    ,PeriodEnd
UNION ALL SELECT DB_NAME()
    ,CAL.Week
    ,PeriodStart AS 'PeriodStart'
    ,PeriodEnd AS 'PeriodEnd'
    ,COUNT(DIARY_OPPS.ENTRY_ID) AS 'Opps'
    ,SUM(CASE WHEN ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE), GETDATE()) <=PeriodEnd THEN 1 ELSE 0 END) AS 'Completed'
FROM (SELECT CAL.Week
        ,MIN(CAL.DATE) AS 'PeriodStart'
        ,MAX(CAL.DATE) AS 'PeriodEnd'
        FROM RM_Util.dbo.EAP_Calendar CAL WITH (NOLOCK)
        WHERE CAL.YEAR = 2022
            AND CAL.Week < DATEPART(wk, GETDATE())
        GROUP BY CAL.Week) CAL
    JOIN RM2.dbo.WPA_DIARY_ENTRY DIARY_OPPS WITH (NOLOCK) ON CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8)) >='01/01/2020'
        AND CAL.PeriodEnd >= CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8))
        --AND CAL.PeriodStart = ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND CAL.PeriodStart <= ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND ISNULL(DIARY_OPPS.AUTO_ID, 0) <> 0
        AND DIARY_OPPS.ATTACH_TABLE = 'CLAIM'
        AND DIARY_OPPS.DIARY_VOID = 0
        AND DIARY_OPPS.DIARY_DELETED = 0
        AND ASSIGNED_USER <> 'admin'
    JOIN RM2.dbo.CLAIM CLAIM_OPPS WITH (NOLOCK) ON DIARY_OPPS.ATTACH_RECORDID = CLAIM_OPPS.CLAIM_ID
        AND CLAIM_OPPS.LINE_OF_BUS_CODE = '243'
GROUP BY CAL.Week
    ,PeriodStart
    ,PeriodEnd
UNION ALL 
SELECT DB_NAME()
    ,CAL.Week
    ,PeriodStart AS 'PeriodStart'
    ,PeriodEnd AS 'PeriodEnd'
    ,COUNT(DIARY_OPPS.ENTRY_ID) AS 'Opps'
    ,SUM(CASE WHEN ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE), GETDATE()) <=PeriodEnd THEN 1 ELSE 0 END) AS 'Completed'
FROM (SELECT CAL.Week
        ,MIN(CAL.DATE) AS 'PeriodStart'
        ,MAX(CAL.DATE) AS 'PeriodEnd'
        FROM RM_Util.dbo.EAP_Calendar CAL WITH (NOLOCK)
        WHERE CAL.YEAR = 2022
            AND CAL.Week < DATEPART(wk, GETDATE())
        GROUP BY CAL.Week) CAL
    JOIN RM5.dbo.WPA_DIARY_ENTRY DIARY_OPPS WITH (NOLOCK) ON CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8)) >='01/01/2020'
        AND CAL.PeriodEnd >= CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8))
        --AND CAL.PeriodStart = ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND CAL.PeriodStart <= ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND ISNULL(DIARY_OPPS.AUTO_ID, 0) <> 0
        AND DIARY_OPPS.ATTACH_TABLE = 'CLAIM'
        AND DIARY_OPPS.DIARY_VOID = 0
        AND DIARY_OPPS.DIARY_DELETED = 0
        AND ASSIGNED_USER <> 'admin'
    JOIN RM5.dbo.CLAIM CLAIM_OPPS WITH (NOLOCK) ON DIARY_OPPS.ATTACH_RECORDID = CLAIM_OPPS.CLAIM_ID
        AND CLAIM_OPPS.LINE_OF_BUS_CODE = '243'
GROUP BY CAL.Week
    ,PeriodStart
    ,PeriodEnd
UNION ALL
SELECT DB_NAME()
    ,CAL.Week
    ,PeriodStart AS 'PeriodStart'
    ,PeriodEnd AS 'PeriodEnd'
    ,COUNT(DIARY_OPPS.ENTRY_ID) AS 'Opps'
    ,SUM(CASE WHEN ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE), GETDATE()) <=PeriodEnd THEN 1 ELSE 0 END) AS 'Completed'
FROM (SELECT CAL.Week
        ,MIN(CAL.DATE) AS 'PeriodStart'
        ,MAX(CAL.DATE) AS 'PeriodEnd'
        FROM RM_Util.dbo.EAP_Calendar CAL WITH (NOLOCK)
        WHERE CAL.YEAR = 2022
            AND CAL.Week < DATEPART(wk, GETDATE())
        GROUP BY CAL.Week) CAL
    JOIN RM9.dbo.WPA_DIARY_ENTRY DIARY_OPPS WITH (NOLOCK) ON CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8)) >='01/01/2020'
        AND CAL.PeriodEnd >= CONVERT(DATE, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8))
        --AND CAL.PeriodStart = ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND CAL.PeriodStart <= ISNULL(CONVERT(DATE, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND ISNULL(DIARY_OPPS.AUTO_ID, 0) <> 0
        AND DIARY_OPPS.ATTACH_TABLE = 'CLAIM'
        AND DIARY_OPPS.DIARY_VOID = 0
        AND DIARY_OPPS.DIARY_DELETED = 0
        AND ASSIGNED_USER <> 'admin'
    JOIN RM9.dbo.CLAIM CLAIM_OPPS WITH (nolock) ON DIARY_OPPS.ATTACH_RECORDID = CLAIM_OPPS.CLAIM_ID
        AND CLAIM_OPPS.LINE_OF_BUS_CODE = '243'
GROUP BY CAL.Week
    ,PeriodStart
    ,PeriodEnd
UNION ALL 
SELECT DB_NAME()
    ,CAL.Week
    ,PeriodStart as 'PeriodStart'
    ,PeriodEnd as 'PeriodEnd'
    ,COUNT(DIARY_OPPS.ENTRY_ID) as 'Opps'
    ,SUM(CASE WHEN ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE), GETDATE()) <=PeriodEnd THEN 1 ELSE 0 END) as 'Completed'
FROM (SELECT CAL.Week
        ,MIN(CAL.DATE) as 'PeriodStart'
        ,MAX(CAL.DATE) as 'PeriodEnd'
        FROM RM_Util.dbo.EAP_Calendar CAL WITH (nolock)
        WHERE CAL.YEAR = 2022
            AND CAL.Week < DATEPART(wk, GETDATE())
        GROUP BY CAL.Week) CAL
    JOIN RM13.dbo.WPA_DIARY_ENTRY DIARY_OPPS WITH (nolock) ON CONVERT(date, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8)) >='01/01/2020'
        AND CAL.PeriodEnd >= CONVERT(date, SUBSTRING(DIARY_OPPS.CREATE_DATE,1,8))
        --AND CAL.PeriodStart = ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND CAL.PeriodStart <= ISNULL(CONVERT(date, DIARY_OPPS.RESPONSE_DATE),  CAL.PeriodStart)
        AND ISNULL(DIARY_OPPS.AUTO_ID, 0) <> 0
        AND DIARY_OPPS.ATTACH_TABLE = 'CLAIM'
        AND DIARY_OPPS.DIARY_VOID = 0
        AND DIARY_OPPS.DIARY_DELETED = 0
        AND ASSIGNED_USER <> 'admin'
    JOIN RM13.dbo.CLAIM CLAIM_OPPS WITH (nolock) ON DIARY_OPPS.ATTACH_RECORDID = CLAIM_OPPS.CLAIM_ID
        AND CLAIM_OPPS.LINE_OF_BUS_CODE = '243'
GROUP BY CAL.Week
    ,PeriodStart
    ,PeriodEnd
)A
GROUP BY WEEK
    ,PeriodStart
    ,PeriodEnd
ORDER BY 1 desc`
sql sql-server dateadd
© www.soinside.com 2019 - 2024. All rights reserved.