Welcome to Sign in | Help

Re: Antete si detalii

  •  11-05-2008, 12:13 PM

    Re: Antete si detalii

    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
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems