10. april 2015 - 13:21Der er
5 kommentarer og 1 løsning
Max function med returnering af kolonneoverskrift
Hej, Hvordan finder jeg max fra flere kolonner og får returneret både værdi og kolonneoverskrift? Fra nedenstående vil jeg gerne returnere 27, col3 20, col4 89, col1 40, col2 70, col1
create table #fake ( id int Primary Key, col1 int, col2 int, col3 int, col4 int )
insert into #fake values (1, 5, 9, 27, 10) insert into #fake values (2, 3, 5, 1, 20) insert into #fake values (3, 89, 9, 27, 6) insert into #fake values (4, 17, 40, 1, 20) insert into #fake values (5, 70, 5, 1, 3)
SELECT MAX(col1) AS maxcol1, MAX(col2) AS maxcol2, ... FROM dintabel
?
Synes godt om
Slettet bruger
10. april 2015 - 14:39#2
Max virker på én kolonne, så data skal først ind på en kolonne og der efter skal max pr. Id findes.
select MaxTal, Col from ( select Id, Col, max(Tal) over (partition by Id) as MaxTal from ( select Id, col1 as Tal, 'Col1' as Col from #Fake union all select Id, col2 as Tal, 'Col2' as Col from #Fake union all select Id, col3 as Tal, 'Col3' as Col from #Fake union all select Id, col4 as Tal, 'Col4' as Col from #Fake ) s1 ) s2 where Tal = MaxTal
Arne_v: med din kode får jeg bare max værdien for hver kolonne. Det skal være maksværdien for hver række(ID), som jo måske burde tilføjes til output ID, MaxVærdi, KolNavnForMaxVærdi 1, 27, col3 2, 20, col4 3, 89, col1 4, 40, col2 5, 70, col1
Synes godt om
Slettet bruger
10. april 2015 - 19:05#5
Der manglede select af Tal i linie 3:
select Id, MaxTal, Col from ( select Id, Col, tal, max(Tal) over (partition by Id) as MaxTal from ( select Id, col1 as Tal, 'Col1' as Col from #Fake union all select Id, col2 as Tal, 'Col2' as Col from #Fake union all select Id, col3 as Tal, 'Col3' as Col from #Fake union all select Id, col4 as Tal, 'Col4' as Col from #Fake ) s1 ) s2 where Tal = MaxTal
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.