Поиск общей ошибки счета в SQL Server 2000 - PullRequest
0 голосов
/ 11 декабря 2010

Я написал запрос, чтобы получить общее количество.Но он возвращает синтаксическую ошибку.Запрос выглядит следующим образом:

((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

Что я могу сделать, чтобы исправить ошибку?

Ответы [ 3 ]

1 голос
/ 11 декабря 2010

Вам не хватает аргумента для вызова функции count (), и вам не хватает и И (или ИЛИ) перед 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

Кроме того, рассматривали ли вы возможность повторного подсчета только в одномподзапрос?

(SELECT COUNT(*) 
    FROM References 
    WHERE DocumentID = 15354 
    AND ((ReferenceType = 1 AND CustomerID = 896)
        OR (ReferenceType = 0))) AS TotalReference
0 голосов
/ 11 декабря 2010

У меня нет большого опыта работы с SQL Server, но я думаю, что он отсутствует, а также я думаю, что * необходим для подсчета (в 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
0 голосов
/ 11 декабря 2010
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
...