Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Query
lunedì 12 gennaio 2009 - 10.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gonzalezh
Profilo
| Junior Member
71
messaggi | Data Invio:
lun 12 gen 2009 - 10:47
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
1.527
messaggi | Data Invio:
mar 13 gen 2009 - 22:32
devi usare l'operatore BETWEEN
gonzalezh
Profilo
| Junior Member
71
messaggi | Data Invio:
mer 14 gen 2009 - 09:14
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
Torna su
Stanze Forum
Elenco Threads
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 !