2010-12-11 4 views
0

J'ai écrit une requête pour obtenir le nombre total. Mais il renvoie une erreur de syntaxe. La requête est la suivante:Recherche de l'erreur de nombre total dans 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 

Que puis-je faire pour corriger l'erreur?

Répondre

1

Il vous manque un argument pour l'appel de fonction count(), et vous manque et AND (ou) avant referenceType = 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 

Aussi, avez-vous pensé returing le compte en un sous-requête ?

(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

Je n'ai pas beaucoup d'expérience avec SQL Server, mais je pense qu'il est le manque et je pense aussi un * est nécessaire sur les comptes (Oracle cela est nécessaire). Toujours dans Oracle, nous aurions besoin d'un SELECT au début (et à partir de DUAL, mais ce n'est pas nécessaire dans 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