Vinnaren i pepparkakshustävlingen!
2013-01-28, 09:07
  #1
Medlem
Hur tar man fram skillnaden mellan värden som finns i de två första kolumnerna i en vy?
Om det t ex står 5 på den första raden och 2 på den andra så ska det bli tre.
Citera
2013-01-28, 09:53
  #2
Medlem
sp0nks avatar
Va?
Citera
2013-01-28, 11:34
  #3
Medlem
Citat:
Ursprungligen postat av sp0nk
Va?

ID Date
-- --
5 2012-12-23
9 2012-12-19

I detta fall är värdet jag vill åt 4 (23 dec - 19 dec).
Hur kan man få fram det genom T-SQL??
Citera
2013-01-28, 11:39
  #4
Medlem
F.B.Dases avatar
Vilken databas?
Citera
2013-01-28, 11:43
  #5
Medlem
Citat:
Ursprungligen postat av F.B.Dase
Vilken databas?

sql server 2008..
Citera
2013-01-28, 11:57
  #6
Medlem
F.B.Dases avatar
Synd. Du hade haft nytta av LAG() och LEAD() i sql sqerver 2012. Har funnits länge i Oracle. Annars går det nog att hitta en lösning i alla fall men man får klura lite till.
Citera
2013-01-28, 12:53
  #7
Moderator
Protons avatar
Borde ju inte vara så svårt?

Kod:
SELECT SUM(somevalFROM
(SELECT TOP 2 someval FROM sometable ORDER BY date DESC
Nåt sånt borde väl funka?

Edit: Fan, det var ju inte det där som efterfrågades ändå
__________________
Senast redigerad av Proton 2013-01-28 kl. 12:57.
Citera
2013-01-28, 18:10
  #8
Medlem
John-Pauls avatar
Använd datediff(day,startdate,enddate)

Om det är i ordning på id stigande och typen för date är date och du vill ha antalet dagars skillnad mellan det lägsta och det näst lägsta id'enas datum så ger du det till funktionen datediff(day,startdate,enddate)

Kod:
set nocount on
if object_id ('data', 'u') is not null
   drop table data
go
create table data (id tinyint not null, datum date not null)
insert into data select 5,'2012-12-23'
insert into data select 9,'2012-12-19'
insert into data select 12,'2012-12-08'
select datediff(day,
   (select top 1 datum from data where id > (select top 1 id from data order by id) order by id),
   (select top 1 datum from data order by id)
   ) as 'Antal dagar'
,(select top 1 id from data where id > (select top 1 id from data order by id) order by id) as 'Näst lägsta id'
,(select top 1 datum from data where id > (select top 1 id from data order by id) order by id) as 'Dess date'
,(select top 1 id from data order by id) as 'Lägsta id'
,(select top 1 datum from data order by id) as 'Dess date'
__________________
Senast redigerad av John-Paul 2013-01-28 kl. 18:29.
Citera
2013-01-28, 18:33
  #9
Medlem
En datediff och två subqueries borde väll lösa allt?

Kod:
select datediff("d",(select date from table limit 0,1),(select date from table limit 1,1))
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback