Ciao a tutti,
devo creare una query con una sottoquery, in quanto il risultato che vuole essere ottenuto, sarebbe che a parità di un IDPRAT devo selezionare il primo contatto, l'ultimo contatto e quello nel mezzo. A volte capita che sono anche 4 pratiche e in questo caso me ne andrebbe bene uno dei due(tra il primo e l'ultimo) senza preferenze. Fortuna ho l'orario del contatto. La query attuale prevede la selezione dei campi interessati che agisce quotidianamente in tre orari diversi.
SELECT idPrat, CodRichiestaCRM, Telefono, convert(VARCHAR(19), DataOraContatto, 21) as DataOraContatto
FROM Lav_CollaudiVodaf_Storico
WHERE (IdEsito = 18) AND DataOraContatto >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
AND DataOraContatto < DATEADD(DAY, 1, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
Per creare la tabella.
CREATE TABLE [dbo].[Lav_CollaudiVodaf_Storico](
[IdStorico] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[IdPrat] [int] NOT NULL,
[CodRichiestaCRM] [int] NULL,
[Telefono] [varchar](15) NULL,
[IdEsito] [int] NULL,
[DataOraContatto] [datetime] NULL,
CONSTRAINT [PK_Lav_CollaudiVodaf_Storico_1] PRIMARY KEY CLUSTERED
(
[IdStorico] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Lav_CollaudiVodaf_Storico] ADD CONSTRAINT [DF_Lav_CollaudiVodaf_Storico_DataImport] DEFAULT (getdate()) FOR [DataImport]
GO
INSERT INTO [dbo].[Lav_CollaudiVodaf_Storico]
([IdPrat]
,[CodRichiestaCRM]
,[Telefono]
,[IdEsito]
,[DataOraContatto]])
VALUES
(<IdPrat, int,>
,<CodRichiestaCRM, int,>
,<Telefono, varchar(15),>
,<IdEsito, int,>
,<CodiceRichiesta, varchar(20),>
,<DataOraContatto, datetime,>
)
GO
Ora viene la parte difficile, in pratica devo effettuare un check sulla selezione precedente. Questa selezione viene effettuata 3 volte al giorno,
ho la necessità che nella seconda selezione vengano controllato che nella selezione precedente ci siano 3 contatti, in caso contrario deve avvenire una insert in una tabella temporanea (o simili). Credo che devo usare un trigger nel momento in cui si scatena un evento (IDESITO è 18).
AIUTO.