Query

lunedì 12 gennaio 2009 - 10.47

gonzalezh Profilo | Junior Member

Ciao,

Io ho una tabella con la seguente struttura:

CREATE TABLE [dbo].[Test](
[DATE_SES] [datetime] NOT NULL,
[BUCKET] [datetime] NOT NULL,

)
go

INSERT INTO [dbo].[Test]
([DATE_SES]
,[BUCKET])
VALUES
(CAST ('30/11/2008' AS DATETIME)
,CAST('31/12/2008' AS DATETIME))
go

INSERT INTO [dbo].[Test]
([DATE_SES]
,[BUCKET])
VALUES
(CAST('30/11/2008' AS DATETIME)
,CAST('31/01/2009' AS DATETIME))
go

INSERT INTO [dbo].[Test]
([DATE_SES]
,[BUCKET])
VALUES
(CAST('30/11/2008' AS DATETIME)
,CAST('28/02/2009' AS DATETIME))



Avrei bisgono di una query che mi restituisca un campo Durata Bucket = Data Fine Bucket - Data Inizio Bucket

considerando la data Fine Bucket come la data del bucket nel quale mi
trovo e la Data Inizio Bucket è pari alla data del bucket
precedente. Per esempio se i bucket sono 31/12/2008; 31/01/2009;
28/02/2009, la data analisi è 30/11/2008, allora partendo dal
primo bucket la data fine bucket è 31/12/2008 e quella inizio
bucket è pari alla data analisi 30/11/2008. Spostandosi nel
secondo bucket, la data fine bucket è 31/01/2008 e la data inizio
bucket è 31/12/2008 (ossia la data del bucket precente). Infine
nel terzo bucket la data fine bucket sarà 28/02/2008 e quella
inizio bucket sarà 31/01/2008

Come sarebbe composta una query che mi restituisca la durata bucket??

Grazie mille,

H.

Jeremy Profilo | Guru

devi usare l'operatore BETWEEN

gonzalezh Profilo | Junior Member

Dal sito msdn forum SQL (Transact-SQL) della Microsoft mi hanno dato questa query e ho risolto.

SELECT t.Date_SES, t.BUCKET, MAX(prevt.BUCKET) AS PreviousBucket,
CASE
WHEN MAX(prevt.BUCKET) IS NULL THEN DATEDIFF(dd, t.Date_SES, t.BUCKET)
ELSE DATEDIFF(dd, MAX(prevt.BUCKET), t.BUCKET)
END AS Duration
FROM Test AS t
LEFT OUTER JOIN Test prevt ON t.BUCKET > prevt.BUCKET
GROUP BY t.Date_SES, t.BUCKET
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5