У меня есть таблица продуктов, которая упрощается до этого:
create table product(id int primary key identity, productid int, year int, quarter int, price money)
и некоторые образцы данных:
insert into product select 11, 2010, 1, 1.11
insert into product select 11, 2010, 2, 2.11
insert into product select 11, 2010, 3, 3.11
insert into product select 12, 2010, 1, 1.12
insert into product select 12, 2010, 2, 2.12
insert into product select 13, 2010, 1, 1.13
Цены могут быть изменены каждый квартал, но не все продукты получают новую цену каждый квартал. Теперь я могу дублировать данные каждый квартал, сохраняя цену одинаковой, но я предпочитаю использовать представление.
Как создать представление, которое можно использовать для возврата цен (например, за 2 квартал)? Я написал это, чтобы вернуть текущую (= последнюю) цену:
CREATE VIEW vwCurrentPrices AS
SELECT *
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY productid ORDER BY year DESC, quarter DESC) AS Ranking
FROM product
) p
WHERE p.Ranking = 1
Я хотел бы создать представление, чтобы я мог использовать такие запросы, как select * from vwProduct where quarter = 2