Таблица: ПродуктSQL Server 2008 R2: Сводные показатели таблицы запроса
create table Product
(
productID int,
productName varchar(20),
productsalesdate DATETIME,
producttype varchar(20)
);
Вставка:
insert into product values(1,'PenDrive','2010-01-01','Electronic');
insert into product values(1,'Computer','2016-01-01','Electronic');
insert into product values(1,'Laptop','2011-02-02','Electronic');
insert into product values(2,'textbook','2014-02-02','books');
insert into product values(2,'notebook','2016-01-01','books');
insert into product values(3,'Car','2016-01-01','Vehicle');
insert into product values(3,'Bike','2016-01-07','Vehicle');
Сначала попробуйте: В этом я получаю неправильную сумму из ProductType
SELECT productID, FirstSale,LastSale, [Electronic],[books],[Vehicle]
FROM
(
SELECT
productID,
MIN(ProductSalesdate) as FirstSale,
MAX(ProductSalesdate) as LastSale,
productType
FROM
Product
Group by productID,productType
) a
PIVOT
(
COUNT(productType)
FOR productType IN ([Electronic],[books],[Vehicle])
) AS pvt;
Second Try: В этой попытке я решил проблему суммы, но запрос занимает больше времени для выполнения для огромных записей.
SELECT productID,FirstSale,LastSale ,[Electronic],[books],[Vehicle]
FROM
(
SELECT a.ProductID, a.FirstSale, a.LastSale, b.ProductType
FROM Product b
inner join
(
SELECT
productID,
MIN(ProductSalesdate) as FirstSale,
MAX(ProductSalesdate) as LastSale
FROM
Product
Group by productID
) as a
ON a.ProductID = b.ProductID
) ab
PIVOT
(
COUNT(productType)
FOR productType IN ([Electronic],[books],[Vehicle])
) AS pvt;
Примечание: Второй запрос работает нормально, но проблема с производительностью, из-за Я присоединяюсь два же таблицы, потому что, чтобы получить счетчик ProductType в запросе поворота.
Вопрос: Как оптимизировать второй запрос, который является моей второй попыткой?
Могут ли продукты определенного 'productType' иметь одинаковые' productId'? –
Кроме того, у вас есть производная таблица 'a' в вашей второй попытке, которая группируется в' productType, productId', но вы присоединяете ее к 'b' только на' productId' ... кажется fishy –
Вы утверждаете, что у вас есть проблема с представление. Не могли бы вы описать это, пожалуйста? Требуются секунды, минуты, часы? Какое время исполнения вы ожидали? –