I've ran into trouble trying to select columns based on the max of a sum of a column. I'm using SQL Server.
I have the following three tables (simplified)
DimensionTable
| SupplierID | ProductID | Revenue | 
|---|---|---|
| 1 | 1 | 500 | 
| 1 | 2 | 2000 | 
| 1 | 3 | 3000 | 
| 2 | 4 | 500 | 
| 2 | 5 | 700 | 
| 2 | 6 | 900 | 
| 3 | 7 | 300 | 
| 3 | 8 | 400 | 
| 3 | 9 | 500 | 
ProductTable
| ProductID | ProductCategory | 
|---|---|
| 1 | Category1 | 
| 2 | Category1 | 
| 3 | Category2 | 
| 4 | Category1 | 
| 5 | Category3 | 
| 6 | Category3 | 
| 7 | Category4 | 
| 8 | Category4 | 
| 9 | Category2 | 
SupplierTable
| SupplierID | SupplierNo | 
|---|---|
| 1 | 102030 | 
| 2 | 203040 | 
| 3 | 304050 | 
What I would like to do is select SupplierNo and ProductCategory based on the  highest max sum of the column Revenue, for each Supplier.
I think I have the "first level" of this query down, but need help with actually filtering rows where Revenue isn't MAX(SUM)). Right now, it is returning MAX(SUM(Revenue)) but grouped by both SupplierNo and ProductCategory.
Query currently is:
WITH dim AS
(
    SELECT
        ProductID,
        SupplierID,
        SUM(Revenue) AS sumRevenue
    FROM
        DimensionTable
    GROUP BY
        ProductID, SupplierID
),
supp AS
(
    SELECT
        SupplierID,
        SupplierNo
    FROM
        SupplierTable
),
prod AS
(
    SELECT
        ProductID,
        ProductCategory
    FROM
        ProductTable
)
SELECT
    MAX(t1.sumRevenue) AS maxSumRevenue,
    t2.SupplierNo,
    t3.ProductCategory
FROM
    dim t1
LEFT JOIN
    supp t2 ON t1.SupplierID = t2.SupplierID
LEFT JOIN
    prod t3 ON t1.ProductID = t3.ProductID
GROUP BY
    t2.SupplierNo, t3.ProductCategory
ORDER BY 
    MAX(t1.sumRevenue) DESC;
Desired result:
| SupplierNo | ProductCategory | MAX(SUM(Revenue)) | 
|---|---|---|
| 102030 | Category2 | 3000 | 
| 203040 | Category3 | 1600 | 
| 304050 | Category4 | 700 | 
So for each distinct SupplierNo, I want the ProductCategory with the highest value of MAX(SUM(Revenue)), and I want all three columns returned from the query.
 
     
    