Мне нужно подсчитать общее количество строк из запроса, и этот запрос имеет объединение. Если я использую Count(*)
, я получаю сообщение об ошибке. Итак, как я могу получить счет?
Это мой код:
SELECT
ProjectName, ProjectReference,
ProjectID, SiteSupervisor,
PrincipalContractor, PrincipalDesigner
FROM
(SELECT
ProjectName, ProjectReference,
ProjectID, SiteSupervisor,
PrincipalContractor, PrincipalDesigner
FROM
CompanyProjects
WHERE
EndDate < GETDATE()
UNION
(SELECT
CompanyProjects.ProjectName AS ProjectName,
CompanyProjects.ProjectReference AS ProjectReference,
CompanyProjects.ProjectID AS ProjectID,
CompanyProjects.SiteSupervisor AS SiteSupervisor,
CompanyProjects.PrincipalContractor AS PrincipalContractor,
CompanyProjects.PrincipalDesigner AS PrincipalDesigner
FROM
CompanyProjects
INNER JOIN
CompanyCurrentReview ON companyprojects.ProjectID = CompanyCurrentReview.ReviewProjectId
AND CompanyCurrentReview.IsReviewComplete = 0
AND CompanyCurrentReview.DateTime BETWEEN DATEADD(YEAR, -2, GETDATE()) AND GETDATE()
AND ProjectID NOT IN (SELECT ProjectID
FROM CompanyProjects
WHERE EndDate < GETDATE()))
UNION
(SELECT
ProjectName, ProjectReference,
ProjectID, SiteSupervisor,
PrincipalContractor, PrincipalDesigner
FROM
CompanyProjects
WHERE
CreatedDate BETWEEN DATEADD(YEAR, -2, GETDATE()) AND GETDATE()
AND ProjectID NOT IN ((SELECT CompanyProjects.ProjectID
FROM CompanyProjects
INNER JOIN CompanyCurrentReview ON companyprojects.ProjectID = CompanyCurrentReview.ReviewProjectId AND CompanyCurrentReview.IsReviewComplete = 0
AND CompanyCurrentReview.DateTime between DateAdd(year,-2,GETDATE() ) AND GETDATE())
UNION SELECT ProjectID FROM
CompanyProjects WHERE EndDate < GETDATE()))) As result order by ProjectID desc
Вы можете попробовать это:
select count(*) from
(
SELECT ProjectName,ProjectReference,ProjectID,SiteSupervisor,PrincipalContractor,PrincipalDesigner FROM (SELECT P ro jec tName,ProjectReference,ProjectID,SiteSupervisor,PrincipalContractor,PrincipalDesigner FROM
CompanyProjects WHERE EndDate < GETDATE()
UNION
(SELECT CompanyProjects.ProjectName As ProjectName, CompanyProjects.ProjectReference As ProjectReference, CompanyProjects.ProjectID As ProjectID,
CompanyProjects.SiteSupervisor As SiteSupervisor,
CompanyProjects.PrincipalContractor As PrincipalContractor, CompanyProjects.PrincipalDesigner As PrincipalDesigner
FROM CompanyProjects
INNER JOIN CompanyCurrentReview ON companyprojects.ProjectID = CompanyCurrentReview.ReviewProjectId AND CompanyCurrentReview.IsReviewComplete = 0
AND CompanyCurrentReview.DateTime between DateAdd(year,-2,GETDATE() ) AND GETDATE() AND ProjectID NOT IN(
SELECT ProjectID FROM
CompanyProjects WHERE EndDate < GETDATE()
))
UNION
(SELECT ProjectName,ProjectReference,ProjectID,SiteSupervisor,PrincipalContractor,PrincipalDesigner FROM
CompanyProjects WHERE CreatedDate between DateAdd(year,-2,GETDATE() ) AND GETDATE() AND ProjectID NOT IN(
(SELECT CompanyProjects.ProjectID
FROM CompanyProjects
INNER JOIN CompanyCurrentReview ON companyprojects.ProjectID = CompanyCurrentReview.ReviewProjectId AND CompanyCurrentReview.IsReviewComplete = 0
AND CompanyCurrentReview.DateTime between DateAdd(year,-2,GETDATE() ) AND GETDATE())
UNION SELECT ProjectID FROM
CompanyProjects WHERE EndDate < GETDATE()))) As result order by ProjectID desc
) a
Рад помочь !
Какая ошибка? Куда вы ставите
count(*)
(редактируйте свой вопрос, а не ответ на комментарий)