I am a little confused out a CTE works. I need to convert my statement from a rollup with a UNION to a CTE… but the CTE is a bit confusing me.
Any Ideas how to approach this?
x
SELECT
ProductName,
Sum ((ItemPrice - DiscountAmount)*Quantity) as ProductTotal
FROM
Products
JOIN OrderItems
ON Products.ProductID = OrderItems.productID
GROUP BY ProductName WITH ROLLUP
Order By ProductTotal
Advertisement
Answer
You can express this using a CTE as:
with cte as (
select ProductName,
Sum((ItemPrice - DiscountAmount)*Quantity) as ProductTotal
from Products p join
OrderItems oi
on p.ProductID = oi.productID
group by ProductName
)
select *
from cte
union all
select null, sum(producttotal)
from cte
order by producttotal;