我有一个存储过程,它从两个不同的表中获取数据,并根据周来平均指标。一个表中的数据看起来很好。然而,另一个是所有周重复的相同值。我已多次检查源表并自行平均数据,数字应该都不同。
这是有问题的存储过程。
INSERT INTO Metrics
(
Application,
App1_Performance,
App1_Availability,
App2_Performance,
App2_Availability,
week,
Current_Week
)
SELECT
COALESCE (k.Application, n.Application) AS App,
AVG(k.Performance) AS App1_Perf,
AVG(k.Availability) AS App1_Avail,
AVG(n.Performance) AS App2_Perf,
AVG(n.Availability) AS App2_Avail,
COALESCE (DATEPART(wk, n.Timestamp), DATEPART(wk, k.Timestamp)) AS inputweek,
DATEPART(wk, GETDATE()) AS currentweek
FROM Table1App1 k
FULL OUTER JOIN Table2App2 n
on k.Application = n.Application
GROUP BY COALESCE (k.Application, n.Application), COALESCE (DATEPART(wk, n.Timestamp), DATEPART(wk, k.Timestamp))
我的结果看起来像这样
App App1_Perf App1_Avail App2_Perf App2_Avail inputweek currentweek
Site 0.740778 99.988252 0.154594 100.000000 50 51
Site 0.740778 99.988252 1.852053 100.000000 49 51
Site 0.740778 99.988252 0.200000 100.000000 46 51
Site 0.740778 99.988252 0.140000 100.000000 47 51
Site 0.740778 99.988252 0.143376 100.000000 48 51
Site 0.740778 99.988252 0.151363 100.000000 51 51
App2的数据看起来不错,但App1只重复相同的值。任何人都可以在存储过程中看到我做错的任何事情会导致这种情况吗?
答案 0 :(得分:1)
更新您的FULL OUTER JOIN以在联接中包含周信息,您应该摆脱这个问题。
INSERT INTO Metrics
(
Application,
App1_Performance,
App1_Availability,
App2_Performance,
App2_Availability,
week,
Current_Week
)
SELECT
COALESCE (k.Application, n.Application) AS App,
AVG(k.Performance) AS App1_Perf,
AVG(k.Availability) AS App1_Avail,
AVG(n.Performance) AS App2_Perf,
AVG(n.Availability) AS App2_Avail,
COALESCE (DATEPART(wk, n.Timestamp), DATEPART(wk, k.Timestamp)) AS inputweek,
DATEPART(wk, GETDATE()) AS currentweek
FROM Table1App1 k
FULL OUTER JOIN Table2App2 n
on k.Application = n.Application
AND DATEPART(wk, n.Timestamp) = DATEPART(wk, k.Timestamp)
GROUP BY COALESCE (k.Application, n.Application), COALESCE (DATEPART(wk, n.Timestamp), DATEPART(wk, k.Timestamp))