fix: use cedlab_Chart_UL2 (new SP, don't modify UL1); add correct SQL scripts with Prices table
This commit is contained in:
90
docs/sql/cedlab_Chart_UL1.sql
Normal file
90
docs/sql/cedlab_Chart_UL1.sql
Normal file
@@ -0,0 +1,90 @@
|
||||
-- ============================================================
|
||||
-- SP: cedlab_Chart_UL1
|
||||
-- Metadata dei sottostanti per il grafico V2.
|
||||
-- Estende FSWeb_Chart_UL con:
|
||||
-- IsWorstOf, PriceWorst, PriceWorstPerc,
|
||||
-- NumPrezziCFT, NomeCFT,
|
||||
-- BarrieraCouponPerc, BarrieraCapitalePerc,
|
||||
-- TriggerAutocallPerc, AutocallValue
|
||||
--
|
||||
-- Ordinato: IsWorstOf DESC (worst-of nella prima riga)
|
||||
--
|
||||
-- NOTA: se questa SP esiste già nel DB con questo nome e restituisce
|
||||
-- già tutte queste colonne, questo file è solo documentazione.
|
||||
-- Eseguilo solo se la SP non esiste o mancano le colonne.
|
||||
--
|
||||
-- ADATTAMENTO RICHIESTO: stessi nomi tabella del file cedlab_Chart_AllSeriesV2.sql
|
||||
-- ============================================================
|
||||
|
||||
USE [FirstSolutionDB]
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[cedlab_Chart_UL1]
|
||||
@isin NVARCHAR(12)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- Numero prezzi CTF disponibili (usato per il sub-titolo)
|
||||
DECLARE @NumPrezziCFT INT;
|
||||
DECLARE @IDCertificates INT;
|
||||
DECLARE @Nominal DECIMAL(18,6);
|
||||
DECLARE @NomeCFT NVARCHAR(200);
|
||||
|
||||
SELECT TOP 1
|
||||
@IDCertificates = c.IDCertificates, -- <<< adatta
|
||||
@Nominal = c.Nominal_amount, -- <<< adatta
|
||||
@NomeCFT = c.Descrizione + ' - ' + c.ISIN -- <<< adatta
|
||||
FROM [dbo].[Certificates] c -- <<< adatta
|
||||
WHERE c.ISIN = @isin;
|
||||
|
||||
SELECT @NumPrezziCFT = COUNT(*)
|
||||
FROM [dbo].[CFT_PriceHistory] -- <<< adatta
|
||||
WHERE IDCertificates = @IDCertificates;
|
||||
|
||||
-- Prezzo attuale worst-of (prezzo corrente / strike * 100)
|
||||
-- La logica di IsWorstOf dipende dalla tua definizione (es: peggior performer)
|
||||
SELECT
|
||||
u.IDCertificates,
|
||||
u.IDUnderlyings,
|
||||
u.StartDate, -- <<< adatta
|
||||
u.Strike, -- <<< adatta
|
||||
-- Percentuali barriere (es: BarrieraCoupon / Nominal * 100)
|
||||
u.BarrieraCouponPerc, -- <<< adatta o calcola
|
||||
u.BarrieraCoupon, -- <<< adatta (valore assoluto)
|
||||
u.BarrieraCapitalePerc, -- <<< adatta o calcola
|
||||
u.BarrieraCapitale, -- <<< adatta (valore assoluto)
|
||||
u.Name AS Sottostante, -- <<< adatta nome colonna
|
||||
u.IsWorstOf, -- <<< adatta: 1=worst-of, 0=altri
|
||||
-- Prezzo attuale worst-of: 0 per non-worst-of
|
||||
CASE WHEN u.IsWorstOf = 1
|
||||
THEN ISNULL(last_px.Px_close, 0) -- <<< adatta: ultimo prezzo disponibile
|
||||
ELSE 0
|
||||
END AS PriceWorst,
|
||||
CASE WHEN u.IsWorstOf = 1 AND u.Strike > 0
|
||||
THEN ISNULL(last_px.Px_close, 0) / u.Strike * 100
|
||||
ELSE 0
|
||||
END AS PriceWorstPerc,
|
||||
@NumPrezziCFT AS NumPrezziCFT,
|
||||
@NomeCFT AS NomeCFT,
|
||||
ISNULL(u.TriggerAutocallPerc, 0) AS TriggerAutocallPerc, -- <<< adatta
|
||||
ISNULL(u.AutocallValue, 0) AS AutocallValue -- <<< adatta
|
||||
FROM [dbo].[Underlyings] u -- <<< adatta nome tabella
|
||||
-- Join per ottenere l'ultimo prezzo disponibile
|
||||
LEFT JOIN (
|
||||
SELECT ul.IDCertificates, ul.IDUnderlyings,
|
||||
ul.Px_close,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY ul.IDCertificates, ul.IDUnderlyings
|
||||
ORDER BY ul.Px_date DESC
|
||||
) AS rn
|
||||
FROM [dbo].[UL_PriceHistory] ul -- <<< adatta nome tabella
|
||||
) last_px
|
||||
ON last_px.IDCertificates = u.IDCertificates
|
||||
AND last_px.IDUnderlyings = u.IDUnderlyings
|
||||
AND last_px.rn = 1
|
||||
WHERE u.IDCertificates = @IDCertificates
|
||||
ORDER BY u.IsWorstOf DESC; -- worst-of prima
|
||||
|
||||
END
|
||||
GO
|
||||
Reference in New Issue
Block a user