我正在更新一个查询,该查询最初是为每周提供指标而编写的,但是当我将 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`