需要帮助,以便根据工作查询中给出的结果从第二个数据库中提取数据。短值需要在第二数据库中查找,以获得完整的可读名称。希望这是有道理的。任何帮助表示赞赏。
有效查询:
USE PData;
SELECT DISTINCT
Customkey,
COUNT(*) AS TotalQueries,
SUM(CASE WHEN status <= '200' THEN 1 ELSE 0 END) AS Completed,
SUM(CASE WHEN status >= '201' THEN 1 ELSE 0 END) AS Failed,
(CAST(SUM(CASE WHEN status >= '201' THEN 1 ELSE 0 END) AS decimal) / COUNT(*)) * 100 AS FailedPercentage
FROM RQueue AS RQ WITH (NOLOCK)
WHERE AddDate >= DATEADD(MINUTE, -60, GETDATE())
GROUP BY CustomKey
ORDER BY 4 DESC,
5 DESC;
当前结果:
CustomKey TotalQueries Completed Failed FailedPercentage
CA_N 18 0 18 100.00000000000
CA_S 11 0 11 100.00000000000
所需结果:
CustomKey FullKeyName TotalQueries Completed Failed FailedPercentage
CA_N California North 18 0 18 100.00000000000
CA_S California South 11 0 11 100.00000000000
所需结果将第二列添加到最终结果中。这将来自:
From CustomData.DB
When CustomKey table matches
return FullKeyName table content
答案 0 :(得分:0)
忘记您曾经学过的nolock-在您了解它的作用和可能发生的事情之前,不要使用它。在这里使用安全吗?也许-但谁知道。通常包含它是因为有人说过“更快”。如果确实包含它,则应该知道它可能会做什么以及可能会产生什么错误(是),并准备在发生错误或有人质疑您的结果时做出响应。
接下来,DISTINCT在这里没有任何用处。为什么要包含它?最后,我们不按序数排序-您不应该鼓励这种不良习惯。
对于您的问题,只需将当前查询放在cte中,然后根据需要加入该cte。大致:
with cte as (select ... from dbo.RQueue ...) --no order by clause here
select <columns you need>
from cte inner (left?) join <database>.<schema>.<table> as NameLookup
on cte.CustomKey = NameLookup.CustomKey
order by cte.Failed desc, cte.FailedPercent desc;
再次-这“大概”是您想要的,因为它涉及一些猜测。注意,我添加了一些更好的做法。