【发布时间】:2014-08-09 10:16:13
【问题描述】:
我有一个存储过程,它使用以下查询从三个单独的表中获取数据,该查询按预期工作。
如何为每个级别添加一个计数,以便我知道为 A.、B. 和 C. 选择了多少项目?
我尝试添加“COUNT(*) AS volume”,但随后出现一些列引用无效的错误。
BEGIN
SET NOCOUNT ON;
SELECT A.itemID,
A.title,
A.sortID,
CONVERT(VARCHAR(11), A.modDate, 106) AS modDate,
A.modBy,
(
SELECT B.itemID,
B.parentID,
B.title,
B.sortID,
CONVERT(VARCHAR(11), B.modDate, 106) AS modDate,
B.modBy,
(
SELECT C.itemID,
C.parentID,
C.title,
C.sortID,
CONVERT(VARCHAR(11), C.modDate, 106) AS modDate,
C.modBy
FROM ORG_Nav3 C
WHERE C.parentID = B.itemID
AND C.logStatus = 'active'
ORDER BY C.sortID, C.title
FOR XML PATH('nav3'), ELEMENTS, TYPE
)
FROM ORG_Nav2 B
WHERE B.parentID = A.itemID
AND B.logStatus = 'active'
ORDER BY B.sortID, B.title
FOR XML PATH('nav2'), ELEMENTS, TYPE
)
FROM ORG_Nav1 A
WHERE A.logStatus = 'active'
ORDER BY A.sortID, A.title
FOR XML PATH('nav'), ELEMENTS, TYPE, ROOT('ranks')
END
非常感谢您提供的任何帮助,蒂姆。
【问题讨论】:
-
查询正常,就是不知道怎么在这里加计数。
-
您的查询可能有效,但它很长并且包含许多与您的问题无关的部分。这使人们很难回答您的问题。
-
谢谢。我不希望有人重写整个查询。对于这个问题,查看最后一个嵌套查询已经对我有所帮助,因为其他级别遵循相同的结构。
标签: sql sql-server select stored-procedures count