Se poate. Să presupunem că avem următorul query (în AdventureWorks):
SELECT h.SalesOrderNumber, h.OrderDate, p.Name as ProductName, d.OrderQty
FROM Sales.SalesOrderHeader h
INNER JOIN Sales.SalesOrderDetail d ON h.SalesOrderID=d.SalesOrderID
INNER JOIN Production.Product p ON p.ProductID=d.ProductID
ORDER BY OrderDate, SalesOrderNumber, ProductName
Atunci putem folosi ceva de genul:
SELECT CASE WHEN n=1 THEN SalesOrderNumber END AS SalesOrderNumber,
CASE WHEN n=1 THEN OrderDate END AS OrderDate,
ProductName, OrderQty
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY SalesOrderNumber ORDER BY ProductName) as n
FROM (
SELECT h.SalesOrderNumber, h.OrderDate, p.Name as ProductName, d.OrderQty
FROM Sales.SalesOrderHeader h
INNER JOIN Sales.SalesOrderDetail d ON h.SalesOrderID=d.SalesOrderID
INNER JOIN Production.Product p ON p.ProductID=d.ProductID
) x
) y ORDER BY y.OrderDate, y.SalesOrderNumber, ProductName
Răzvan