Witam,
Chce troche zoptymalizowac widok. Poniżej podaje część kodu.
CREATE OR REPLACE FORCE VIEW SA.VW_COTR_PL
(
ID_U,
ID_TT,
WIN,
WINVERSION
)
AS
SELECT DISTINCT
ID_U,
ID_TT,
(SELECT DISTINCT VALUE
FROM ihs.vw_x_PL_hardware
WHERE description = 'Operating System'
AND time_received =
(SELECT MAX (time_received)
FROM ihs.vw_x_PL_hardware
WHERE VALUE = vw.VALUE AND ID_TT = vw.ID_TT)
AND ID_TT = vw.ID_TT
AND ID_U = vw.ID_U
AND row_id = vw.row_id)
AS WIN,
(SELECT DISTINCT VALUE
FROM ihs.vw_x_PL_hardware
WHERE description = 'WIN Version'
AND time_received =
(SELECT MAX (time_received)
FROM ihs.vw_x_PL_hardware
WHERE VALUE = vw.VALUE AND ID_TT = vw.ID_TT)
AND ID_TT = vw.ID_TT
AND ID_U = vw.ID_U
AND row_id = vw.row_id)
AS WINversion
FROM ihs.vw_x_PL_hardware vw
WHERE time_received = (SELECT MAX (time_received)
FROM ihs.vw_x_PL_hardware vw2
WHERE vw.ID_TT = vw2.ID_TT AND vw.ID_U = vw2.ID_U
)
AND VALUE IS NOT NULL
ORDER BY ID_U, ID_TT, WIN;
Mam takie pytanie, posiadam kolo 10 takich bloków w tym kodzie:
(SELECT DISTINCT VALUE
FROM ihs.vw_x_PL_hardware
WHERE description = 'WIN Version'
AND time_received =
(SELECT MAX (time_received)
FROM ihs.vw_x_PL_hardware
WHERE VALUE = vw.VALUE AND ID_TT = vw.ID_TT)
AND ID_TT = vw.ID_TT
AND ID_U = vw.ID_U
AND row_id = vw.row_id)
AS WINversion
różnią się tylko "description" i na końcu "AS something". Da się to jakoś skrócić, żeby nie trzeba było tak co chwile powtarzać tego selecta? Czym więcej takich selectów, tym wolniej mi się ten widok otwiera...