У меня есть хранимая процедура, и я сделал ее с помощью UNION; как я могу подсчитать общее количество строк?

Мне нужно подсчитать общее количество строк из запроса, и этот запрос имеет объединение. Если я использую 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

Какая ошибка? Куда вы ставите count(*) (редактируйте свой вопрос, а не ответ на комментарий)

JohnHC 30.05.2019 11:05
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать это:

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

Рад помочь !

Red Devil 11.06.2019 09:29

Другие вопросы по теме

Похожие вопросы

Android - Комната, как добавить ссылку на внешний ключ для переноса данных
Как создать текущую последовательность в Oracle на основе значений столбца отчета
Обновление значений для всех строк на основе уникального идентификатора — Oracle
Таблица событий запросов BigQuery
Как вставить массив объектов JSON в PostgreSQL как отдельные элементы
Проверьте, имеет ли строка определенное окончание, сотрите это окончание, затем запишите эти строки в соответствии с двумя другими условиями
Учитывая увеличивающиеся значения идентификатора и созданную дату, создайте оператор SQL, чтобы определить, не совпадают ли какие-либо даты с идентификатором в оракуле
Различные строки для результатов при использовании оператора case SQL для одного и того же значения
Выбрать данные, где условие соответствует, и если нет, то выбрать все?
Ошибка оператора Group BY для получения уникальных записей