Group By Count и поле в одном запросе

У меня есть таблица (MyTable) с тремя столбцами; Номер, Строка, Сумма.
Если число одинаково в более чем 3 записях, я хочу вернуть эти записи, сгруппированные по номеру. В противном случае я хочу, чтобы все записи были сгруппированы по номерам и линиям.

Это то, что я получил до сих пор. Это дает ошибку, поскольку строка должна быть в агрегированной функции

select * ( select Number, (case when count(Line) > 3 then -1 else Line end) as Line2, sum(Amount) from MyTable group by Number, Line2 ) as x order by x.Number 

MyTable выглядит примерно так:

 Number Line Amount ------------------------ 1 1 100 1 1 100 1 2 200 1 2 200 2 1 150 2 1 150 3 1 300 3 2 350 

Я хочу, чтобы результат выглядел примерно так:

 Number Line2 Amount ------------------------ 1 -1 600 <- More than 3 lines 2 1 300 <- Grouped by Line 3 1 300 3 2 350 

Попробуй это:

 SELECT Number, -1 AS Line, SUM(Amount) AS Amount FROM mytable GROUP BY Number HAVING COUNT(*) > 3 UNION SELECT Number, Line, SUM(Amount) AS Amount FROM mytable WHERE Number NOT IN (SELECT Number FROM mytable GROUP BY Number HAVING COUNT(*) > 3) GROUP BY Number, Line 

Вы можете использовать CTE следующим образом:

 DECLARE @t table (Number int,Line int,Amount int) INSERT @t VALUES (1,1,100),(1,1,100),(1,2,200), (1,2,200),(2,1,150),(2,1,150), (3,1,300),(3,2,350) ;WITH CTE as ( SELECT Number, Line, Amount, count(*) over (partition by number) cnt FROM @t ) SELECT Number, CASE WHEN cnt < 3 THEN Line ELSE -1 END Line2, SUM(Amount) Amount FROM CTE GROUP BY number, CASE WHEN cnt < 3 THEN Line ELSE -1 END 

Результат:

 Number Line Amount 1 -1 600 2 1 300 3 1 300 3 2 350 
  • TSL / SQL PERCENTILE_CONT должен вернуть 1 запись
  • Уникальные результаты для команды SQL с значениями GROUP, MIN и NULL
  • несколько столбцов GROUP BY в один столбец
  • SQL over partition count затем группируется по месяцам
  • Группа sql sum
  • SQL Max (дата) без группы
  • SQL-запрос, включающий count, group by и substring
  • SQL-группа, если значения близки
  • Как получить минимальную дату по идентификатору группы на идентификатор клиента
  • SQL - 2 Подсчет в одном запросе
  • Только отдельные значения после группы в SQL Server 2014
  • Interesting Posts

    Как сохранить значение null для числовых значений при использовании BeanUtils.copyProperties?

    Исправление внешних ключей с устаревшей базой данных

    Путаница в отношении ОБРАБОТКИ ПОРЯДОК ОПЕРАЦИЙ «ОТКРЫТО», «ТОП» И «ПОЛОЖЕНИЕ»

    Как запретить другим приложениям подключаться к SQL Server?

    SQL Server – выбор отдельных строк и суммы дубликатов

    Удалить имя экземпляра

    Сбой CLR при первом использовании из-за неиспользуемой переменной

    sql создать строковую переменную с именами столбцов

    SUM двумя разными группами GROUP BY

    Результаты запроса к объекту Entity Framework Duplicate

    Улучшение работы с SQL DataTime

    SQL CLR Отладка получает «Отменено пользователем»

    как выбрать CSV в строки вместе с другим столбцом в sqlserver

    SQL Server вставляет огромное количество строк в таблицу со значениями по умолчанию и столбцом идентификации в нем

    SQL Найти разницу между предыдущей и текущей строкой

    Давайте будем гением компьютера.