Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
select t.rn
, t.dealid deal_id
, t.customerid cust_id, c.customername cust_name
, t.nomenclatureid nom_id, nom.nomenclaturename nom_name
, t.dealdate, t.qty
from (
select d.DealID, d.customerid, nomenclatureid
, [COUNT] qty -- нехорошо :(
, dealdate
-- нумеруем отдельно заказы каждого клиента с сортировкой по дате
, ROW_NUMBER() over( partition by customerid order by dealdate desc ) rn
from Deal d
) t
join customer c on( c.customerid = t.customerid )
join nomenclature nom on( nom.nomenclatureid = t.nomenclatureid )
where t.rn <= 10
order by cust_id, dealdateИли же я не правильно понял задачу.CREATE INDEX I_Deal ON Deal(CustomerID, DealDate, NomenclatureID)CREATE INDEX I_Deal1 ON Deal (CustomerID, DealDate)
CREATE INDEX I_Deal2 ON Deal (CustomerID, DealDate desc)
CREATE INDEX I_Deal3 ON Deal (DealDate desc, CustomerID)
CREATE INDEX I_Deal3 ON Deal (DealDate, CustomerID)
USE Claims
GO
SET NOCOUNT ON
GO
DECLARE @i INT
SET @i = 1
WHILE @i < 1000000
BEGIN
INSERT INTO Deal(CustomerID, NomenclatureID, [Count], DealDate)
SELECT (@i % 3) + 1, (@i % 3) + 1, 250, DateADD(n, -@i, '2010-01-01')
SET @i = @i + 1
END
select (
select [column] + [delimeter] as 'data()'
from [table] as A
for xml path(''))
MSSql: Использование оператора APPLY в TSql