Rækkerne med ID = 103 og 104 skal altså væk fordi de netop de rækker også findes med højere versionsnummer.
Jeg har prøvet en del forskelligt, seneste med nedenstående, som dog desværre bare returnerer samtlige rækker:
SELECT [ACEID], [LineNumber], [Year], [Value], [Version], [AnalysisID] FROM [ACE2] WHERE [Version] IN ( SELECT MAX([Version]) FROM [ACE2] GROUP BY [Version] )
Jeg håber der en der har mod på kort at hjælpe mig videre med problemet.
WITH aCTE AS ( SELECT ROW_NUMBER() OVER(PARTITION BY LineNumber ORDER BY Version DESC) AS RowNumber, * )
SELECT * FROM aCTE WHERE RowNumber = 1
Jeg har i overstående gået ud fra, at year, value og de andre id'er er underordnede. Så det der returneres, er præcis én række for hver LineNumber id, og det er så den række med højeste version. Hvis IKKE du kører SQL 2005, så kan du ikke bruge ovenstående.
Det virkede helt fint, der manglede bare lige en FROM clause inden SELECT nr. 2.
Jeg har et tillægsspørgsmål, hvis det er OK med dig (sig til hvis det er bedre med et nyt spm.)
Ovenstående giver nyeste versionerede resultatsæt. Når der indsættes værdier bundet til AnalysisID vil det som tidligere beskrevet resultere i et højere versionsnummer.
Derfor virker ovenstående fint når jeg vil hente det senest opdaterede resultatsæt. Men hvordan kan det gribes an hvis jeg derefter gerne vil se hvordan sættes så ud i et bestemt stadie.
F.eks. vil jeg gerne kunne komme med en AnalysisID og får retur hvordan data så ud med den version der var højest da AnalysisID blev indsat.
Hvis vi forestiller os at der var kommet en ny version med data i version 3 og jeg gerne ville se ud da AnalysisID = 1002 var den nyeste.
Der ville den så stadig skulle returnere ID 101, 102, 105, 106, 107 men ikke 108 og 108 som ville være nyere end de data der var tilgængelige data AnalysisID = 1002 var den nyeste.
Jeg håber spørgsmålet giver mening, det er sgu lidt kringlet at forklare ;-)
Jeg er ikke helt sikker på at jeg forstår. Du skriver "Når der indsættes værdier bundet til AnalysisID vil det som tidligere beskrevet resultere i et højere versionsnummer.". Mener du ikke, at det er når man indsætter rækker med samme LineNumber værdi, at versionsnummeret så stiger? Jeg synes jo at der er flere forskellige AnalysisID'er, med samme versionsnr.
Har version og analysisId noget med hinanden at gøre, eller er det "tilfældigt" at når versionen er 1, så er analysisid 1001 osv?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.