Avatar billede netro Nybegynder
27. juni 2007 - 09:30 Der er 11 kommentarer og
1 løsning

Select query

Er det muligt at selektere den første række, hvor Col1 er lig "1", "2" og "3" uden at løbe i gennem med en cursor?

Col1    Col2    Col3     
1    937    A
1    365    B
1    7499    C
1    7527    D
2    9121    R
2    965    S
2    7456    T
2    7527    U
3    856    L
3    812    M
3    7499    N

Resultatet skal altså blive:

Col1    Col2    Col3     
1    937    A
2    9121    R
3    856    L
Avatar billede wagner Nybegynder
27. juni 2007 - 09:38 #1
Du kan vel lave noget ala
select top 1 from xxx where col1 = 1
union
select top 1 from xxx where col1 = 2
union
select top 1 from xxx where col1 = 3

Mvh Wagner
Avatar billede wagner Nybegynder
27. juni 2007 - 09:39 #2
Du skal nok evt have en order by på.
select top 1 from xxx where col1 = 1
union
select top 1 from xxx where col1 = 2
union
select top 1 from xxx where col1 = 3
order by col3, col2

Men jeg ved jo ikke hvordan du vil have dit udtræk.

Wagner
Avatar billede netro Nybegynder
27. juni 2007 - 09:43 #3
Det vil virke i eksemplet her, men de værdier, du ser under Col1 kan fx også gå fra 3000-16000.
Avatar billede wagner Nybegynder
27. juni 2007 - 09:53 #4
Du kan måske prøve noget i denne stil

select distinct col1, (select top 1 col2 from xxx x2 where x1.col1 = x2.col1) as col2,
(select top 1 col3 from xxx x3 where x1.col1 = x3.col1) as col3
from xxx x1

Dette giver dog ikke så god en perfomance, så jeg ville lave en function, der med input af col1 kan give den første col2 og col3.

Wagner
Avatar billede wagner Nybegynder
27. juni 2007 - 09:58 #5
Hvis det ovenstående ikke virker skal det måske skrives som:

select x1.col1, (select top 1 col2 from xxx x2 where x1.col1 = x2.col1) as col2,
(select top 1 col3 from xxx x3 where x1.col1 = x3.col1) as col3
from (select distinct col1 from xxx) x1

Wagner
Avatar billede wagner Nybegynder
27. juni 2007 - 11:33 #6
Virkede det?
Avatar billede netro Nybegynder
27. juni 2007 - 21:18 #7
Det har jeg godt nok ikke endnu, men du må godt lægge et svar. Tror dog at det er en anelse tungt, men det er min nuværende løsning også...
Avatar billede netro Nybegynder
27. juni 2007 - 21:19 #8
Hov, du havde jo lagt et svar :)
Avatar billede wagner Nybegynder
27. juni 2007 - 22:18 #9
Håber du fik det til at virke, ellers må du lige skrive...

God fornøjelse med det.

Wagner
Avatar billede netro Nybegynder
27. juni 2007 - 22:22 #10
Tak skal du have.
Avatar billede arne_v Ekspert
07. juli 2007 - 04:28 #11
Prøv:

SELECT t1.* FROM t t1 JOIN (SELECT c1 AS c1x,MIN(c3) AS c3x FROM t GROUP BY c1) x ON t1.c1=x.c1x AND t1.c3=x.c3x

(jeg har kaldt col1,col2,col3 for c1,c2,c3)
Avatar billede netro Nybegynder
05. december 2007 - 10:23 #12
Arne -> Jeg fik også prøvet dit svar. Virker perfekt.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester