【发布时间】:2016-11-23 19:52:38
【问题描述】:
此查询仅成功返回可能包含多行的连接的第一行。
WITH RevisionProducts AS (
SELECT
qr.LeadID,
p.Code,
ROW_NUMBER() OVER(PARTITION BY qr.LeadID ORDER BY qr.LeadID DESC) rownumber
FROM
QuoteRevisions qr
JOIN ...
)
SELECT
l.LeadID,
...
co.Name,
rp1.Code,
0 AS CodeCount
FROM
Leads l
JOIN Companies co on co.CompanyID = l.CompanyID
JOIN RevisionProducts rp1 ON rp1.LeadID = l.ID AND rp1.rownumber = 1
我现在要做的是替换...
0 AS CodeCount
...如果我们允许所有这些,将在连接中返回的实际行数。不知道该怎么做。
我不确定我是否需要 CTE,但我认为它可能很方便,因为我很可能需要再次引用相同的查询来计算计数?
编辑:
好吧,看来我需要更清楚了。所以 CTE 中的查询......让我们用 WHERE 子句运行它:
SELECT
qr.LeadID,
p.Code,
ROW_NUMBER() OVER(PARTITION BY qr.LeadID ORDER BY qr.LeadID DESC) rownumber
FROM
QuoteRevisions qr
JOIN ...
WHERE
qr.LeadID = 151
假设查询返回 5 行。因此,在第一个查询中,如果我们没有将联接仅限制在第一行,那么当 Lead.LeadID 达到 151 时,联接将返回 5 行。所以在最终数据集中,将有 5 行rp1.Code 列除外。
我已经将行数限制为 1,这正是我想要的。但是现在,我想知道会返回多少行。
我希望这更有意义。
【问题讨论】:
-
我在这里完全糊涂了。 “如果我们全部允许,将在连接中返回”是什么意思?我一遍又一遍地阅读它,它对我来说根本没有任何意义。您是否尝试获取每个组的行数?你看过使用 COUNT 吗?在我们在这里提供帮助之前,您必须提供更多详细信息。这将是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
良好的反馈。查看我对 OP 的编辑
标签: sql sql-server join count common-table-expression