пятница, 22 марта 2013 г.

Как найти первые либо последние заказы у всех клиентов

-- Варианты вопросов:-- Как найти последние транзакции клиентов-- Как найти последние по счету курсы, проекты, командировки всех сотрудников

-- SQL server >= 2005
-- Пример:-- Как найти первые либо последние заказы у всех клиентов-- Считаем, что SalesOrderID строго увеличивается при вводе нового заказа-- ВАРИАНТ-- последние заказы


SELECT TOP(1)  WITH TIES
   CustomerID
   ,ROW_NUMBER() OVER
    (
        PARTITION BY CustomerID
        ORDER BY SalesOrderID DESC
    ) AS CustomerOrderNumber
, OrderDate
  FROM AdventureWorks.Sales.SalesOrderHeader
  ORDER BY CustomerOrderNumber;

-- Как найти первые заказы у всех клиентов

SELECT TOP(1) WITH TIES
   CustomerID
   ,ROW_NUMBER() OVER
    (
        PARTITION BY CustomerID
        ORDER BY SalesOrderID
    ) AS CustomerOrderNumber
, OrderDate
  FROM AdventureWorks.Sales.SalesOrderHeader
  ORDER BY CustomerOrderNumber;

-- Какие минусы у этого подхода?