HAVING проверяет условие об агрегированных атрибутах групп, по которым вы агрегируете.
Так же, как ГДЕ проверяет условия по строкам, HAVING проверяет условия по агрегатам строк в соответствии с группировкой, указанной вyour GROUP BY.
Обычно для показа школ с более чем 100 детьми или магазинов, в которых было продано товаров на сумму более 1000 долларов.
Похоже, вы этого не ищете -вы ищете группу (на самом деле даже не группу, а счет-фактуру), которая имеет наибольшее количество:
WITH x AS (
SELECT INV_LINE_ITEM.FK_InvoiceNbr, RANK() (OVER BY INV_LINE_ITEM.Quantity DESC) AS rnk
FROM INV_LINE_ITEM
)
SELECT * FROM x WHERE rnk = 1
Это даст мультипликаторы, если они связаны с RANK.Есть также аналитические функции DENSE_RANK и ROW_NUMBER, которые ведут себя немного иначе .
Если вы хотите, чтобы строка в каждом счете-фактуре имела наибольшее количество:
WITH x AS (
SELECT INV_LINE_ITEM.FK_InvoiceNbr, RANK() (OVER BY INV_LINE_ITEM.Quantity DESC PARTITION BY INV_LINE_ITEM.FK_InvoiceNbr) AS rnk
FROM INV_LINE_ITEM
)
SELECT * FROM x WHERE rnk = 1