【发布时间】:2022-01-13 22:10:24
【问题描述】:
我在加入 3 个临时表时遇到问题。
我有这样的桌子
-
UDT_CKB_SNAPSHOT - 不同物品和活动的列表(特价物品)一些促销活动等
-
FCSTPERFSTATIC - 预测
-
HISTWIDE_CHAIN - 实际值
我将编写整个代码,但在选择所有三个临时表时不起作用的是连接。其他一切都很好(输入以防万一有人想看到整个图片)。
WITH UDT_CKB_SNAPSHOT AS
(
SELECT [UPC] ,[MASTERCHAINNAME] ,[EVENT_TYPE],[STARTDATE],[ENDDATE] ,[EVENT_NAME]
FROM [BYIntegration].[SCPOMGR].[UDT_CKB_SNAPSHOT]
WHERE [EVENT_TYPE]='Promotion' AND
[STARTDATE] BETWEEN '2021-09-26' AND '2021-12-08'
GROUP BY [UPC] ,[MASTERCHAINNAME],[EVENT_TYPE],[STARTDATE],[ENDDATE] ,[EVENT_NAME]
),
FCSTPERFSTATIC AS
( SELECT [DMDUNIT],[STARTDATE],[LOC],SUM([TOTFCST]) AS 'Forecast'
FROM [BYIntegration].[SCPOMGR].[FCSTPERFSTATIC]
WHERE [STARTDATE] BETWEEN '2021-09-26' AND '2021-12-08'
GROUP BY [DMDUNIT], [STARTDATE], [LOC]
),
HISTWIDE_CHAIN AS
( SELECT [DMDUNIT] ,[DMDPostDate],[LOC] ,SUM([HistoryQuantity]) AS 'HistoryQuantity'
FROM [BYIntegration].[SCPOMGR].[HISTWIDE_CHAIN]
WHERE [DMDPostDate] BETWEEN '2021-09-26' AND '2021-12-08'
GROUP BY [DMDUNIT], [DMDPostDate], [LOC]
)
**SELECT U.[UPC] AS 'Item', U.[MASTERCHAINNAME] AS 'Chain', U.[STARTDATE] AS 'Start Date', U.[EVENT_TYPE] , U.[EVENT_NAME], SUM(F.Forecast) AS 'Forecast', SUM(A.HistoryQuantity) AS 'Actuals'
FROM UDT_CKB_SNAPSHOT U
LEFT OUTER JOIN FCSTPERFSTATIC F
on U.[UPC]=F.[DMDUNIT] AND U.[MASTERCHAINNAME]=F.[LOC]
LEFT OUTER JOIN HISTWIDE_CHAIN A
ON U.[UPC]=a.[DMDUNIT] AND U.[MASTERCHAINNAME]=a.[LOC]
AND a.[DMDPostDate]=u.[STARTDATE] and f.[STARTDATE]=a.[DMDPostDate]
GROUP BY U.[UPC], U.[MASTERCHAINNAME], U.[STARTDATE], U.[EVENT_TYPE] , U.[EVENT_NAME]**
所以问题是粗斜体字。
我需要在日期上连接所有三个表,以确保在同一时间段内选择相同的库存。每当我加入这三个表时,我要么得到正确的预测或实际值,但永远不会同时得到。
当我输入这个时,我得到预测正确,但实际不正确 a.[DMDPostDate]=u.[STARTDATE] 和 f.[STARTDATE]=a.[DMDPostDate](预测正确 6998.649,实际不正确 826)
-- AND u.[STARTDATE]=f.[STARTDATE] and f.[STARTDATE]=u.[STARTDATE](实际值正确 10369,预测不正确 8322.315)
-- 和 a.[DMDPostDate]=f.[STARTDATE](预测正确 6998.649,实际不正确)
-- AND u.[STARTDATE]=a.[DMDPostDate](预测正确 6998.649,实际不正确)
-- AND u.[STARTDATE]=f.[STARTDATE](实际正确 10369,预测不正确)
-- and u.[STARTDATE]=f.[STARTDATE] and u.[STARTDATE] = a.[DMDPostDate](预测正确6998.649,实际不正确)
当我分别运行所有三个查询时,一切正常,但是当我选择其中一个时,取决于我加入 STARTDATE 的方式出错。我几乎花了一整天的时间来解决问题,但我仍然不明白如何让它工作。
我将不胜感激。
【问题讨论】:
标签: sql-server ssms