2010-12-11 49 views
0

我有一个查询来获得总数。但它返回一个语法错误。查询如下:在SQL Server 2000中查找总计数错误

((SELECT COUNT(*) FROM References 
    WHERE DocumentID = 15354 AND CustomerID = 896 AND ReferenceType = 1) 
    + 
(SELECT COUNT(*) FROM References 
WHERE DocumentID = 15354 AND ReferenceType = 0)) AS TotalReference 

我该如何解决这个错误?

回答

1

你缺少对count()函数调用的参数,你缺少与之前(或OR)引用类型= 1

((SELECT COUNT(*) 
    FROM References 
    WHERE DocumentID = 15354 
    AND CustomerID = 896 
    AND ReferenceType = 1) + 
(SELECT COUNT(*) 
    FROM References 
    WHERE DocumentID = 15354 
    AND ReferenceType = 0)) AS TotalReference 

而且,你有没有考虑在短短的一个子查询returing计数?

(SELECT COUNT(*) 
    FROM References 
    WHERE DocumentID = 15354 
    AND ((ReferenceType = 1 AND CustomerID = 896) 
     OR (ReferenceType = 0))) AS TotalReference 
0
SELECT ((SELECT COUNT(*) FROM [References] 
    WHERE DocumentID = 15354 AND CustomerID = 896 AND ReferenceType = 1) + 
    (SELECT COUNT(*) FROM [References] 
    WHERE DocumentID = 15354 AND ReferenceType = 0)) 
AS TotalReference 
0

我与SQL Server没有多少经验,但我认为这是缺少的,也是我认为需要在计数A *(在Oracle这是需要)。同样在Oracle中,我们在开始时需要一个SELECT(并且来自DUAL,但在SQL Server中不需要):

select 
((SELECT COUNT(*) FROM References 
WHERE DocumentID = 15354 
AND CustomerID = 896 
and ReferenceType = 1) 
+ 
(SELECT COUNT(*) FROM References 
WHERE DocumentID = 15354 
AND ReferenceType = 0) 
) AS TotalReference