SQL Server: как я могу использовать предложение COUNT без группировки?
Я ищу две вещи из запроса, учитывая ряд ограничений:
The first match The total number of matchesЯ могу получить первый матч по:
<code>SELECT TOP 1 ID, ReportYear, Name, SignDate, ... FROM Table WHERE ... ORDER BY ... //I can put in here which one I want to take </code>
И тогда я могу получить количество совпадений, если я использую
<code>SELECT MIN(ID), MIN(ReportYear), MIN(Name), MIN(SignDate), ... , COUNT(*) as MatchCount FROM Table WHERE ... GROUP BY ??? // I don't really want any grouping </code>
Я действительно хочу избежать как группировки, так и использования агрегатной функции для всех моих результатов. Этот вопросSQL Server Выберите COUNT без использования агрегатной функции или группировки по предполагает, что ответ будет
<code>SELECT TOP 1 ID, ReportYear, Name, SignDate, ... , @@ROWCOUNT as MatchCount FROM Table </code>
Это работает без TOP 1, но когда оно там, @@ ROWCOUNT = количество возвращаемых строк, которое равно 1. Как я могу получить, по существу, вывод COUNT (*) (независимо от того, что осталось после предложения where) без какой-либо группировки или нужно объединить все столбцы?
То, что я не хочу делать, это повторять каждый из них дважды, один раз для первого ряда, а затем снова для @@ ROWCOUNT. Я не нахожу способ, которым я могу должным образом использовать GROUP BY, потому что я строго хочу количество элементов, которые соответствуют моим критериям, и я хочу столбцы, которые, если я их сгруппировал, скинут это число - если только я не неправильно понял GROUP BY.