Используйте LAG()
, чтобы увидеть, изменилась ли цена:
SELECT STOCKID, PRICE, TRANSTYPENAME, TRANSDATE
FROM (SELECT st.*,
LAG(st.price) OVER (PARTITION BY stockId ORDER BY transdate) as prev_price
FROM VE_STOCKTRANS st
WHERE STOCKID = 6000 AND TANSTYPE IN (3500, 3553)
) st
WHERE prev_price IS NULL OR prev_price <> price;
РЕДАКТИРОВАТЬ:
Если вы просто хотите получить список впервые, когда каждая цена видна (что довольноотличается от изменения цен, как вы отметили и описали в вопросе), используйте row_number()
:
SELECT STOCKID, PRICE, TRANSTYPENAME, TRANSDATE
FROM (SELECT st.*,
ROW_NUMBER() OVER (PARTITION BY st.stockId, st.price ORDER BY st.transdate) as seqnum
FROM VE_STOCKTRANS st
WHERE STOCKID = 6000 AND TANSTYPE IN (3500, 3553)
) st
WHERE seqnum = 1;