|
Execute the following
script in Query Editor to a ranking report by orderID and reason
description:
USE AdventureWorks;
WITH wteSOD
AS
(SELECT SalesOrderID, ProductName=Name,
RANK() OVER (PARTITION BY SalesOrderID
ORDER BY p.ProductID) AS Rank
FROM Sales.SalesOrderDetail sod JOIN Production.Product
p
ON sod.ProductID = p.ProductID),
wteSR
AS
(SELECT sohsr.SalesOrderID, sr.[Name],
RANK() OVER (PARTITION BY SalesOrderID
ORDER BY sr.[Name]) AS Rank
FROM Sales.SalesOrderHeaderSalesReason as sohsr
INNER JOIN Sales.SalesReason AS sr
ON sr.SalesReasonID = sohsr.SalesReasonID)
SELECT SeqID=ROW_NUMBER() OVER ( ORDER BY soh.SalesOrderNumber),
soh.SalesOrderNumber, ProductName, wteSR.[Name] AS Reason
FROM wteSOD
FULL JOIN wteSR
ON wteSR.SalesOrderID = wteSOD.SalesOrderID
AND wteSR.Rank = wteSOD.Rank
INNER JOIN Sales.SalesOrderHeader AS soh
ON soh.SalesOrderID = COALESCE (wteSOD.SalesOrderID,
wteSR.SalesOrderID)
WHERE soh.TotalDue > 200000.0
ORDER BY soh.SalesOrderID, COALESCE(wteSR.Rank,
wteSOD.Rank);
|