Avatar billede anhansen Nybegynder
02. december 2004 - 14:19 Der er 9 kommentarer og
1 løsning

Sortering efter 4 talkolonner?

Hej

Jeg har 4 talkolonner, 2002, 2003, 2004, 2005 - disse vil jeg gerne have sorteret.

Kravet er at alle dem der har et tal for 2005 skal stå øverst, øverst af dem skal stå dem som også har for 2004, og øverst af dem alle dem for 2003 osv.

Hvordan gør jeg det?

Udtrækket skulle i mit hovede altså komme til at stå som:

Eks

2002  2003  2004    2005
  10    10    10      10
  0    10    10      10
  0      5      4      3
  0      0    10      10
  10    10    10      0
  10    10      0      0

Jeg kan ikke selv gennemskue om det overhovedet kan lade sig gøre - er lidt i tvivl.

Men altså den skal ikke nødvendigvis sortere de højeste fra 2005 øverst - den skal nærmest "fælles ordne" alle kolonnerne.

Så "2005 DESC, 2004 DESC, 2003 DESC, 2002 DESC" duer ikke!

/Anders
Avatar billede erikjacobsen Ekspert
02. december 2004 - 14:31 #1
Det kommer en del an på databasen. I MySql kan du fx.

... order by if(aar2005=0,0,1),if(aar2004=0,0,1)

hedder dine felter 2005 osv.? Og hvilken database bruger du?
Avatar billede anhansen Nybegynder
02. december 2004 - 14:36 #2
Jeg tror ikke det er så væsentligt - det er i c# jeg laver sorteringen. Da kolonnerne kræver lidt kode for at blive hevet korrekt ud.

Men jeg bruger MS Sql, og felterne hedder årstallet.
Men selve sorteringen bliver lavet i asp.net/c# - i
myDataTable.DefaultView.Sort = "sortsætningen"
Avatar billede erikjacobsen Ekspert
02. december 2004 - 14:37 #3
Ok, men i MSSQL skal du kunne noget i retning af

  ... order by nullif([2005],0),nullif([2004],0),...

(og så kan jeg ikke lige overskue om det kommer i omvendt orden. Sæt selv en DESC på i så fald)
Avatar billede anhansen Nybegynder
02. december 2004 - 14:41 #4
Jeg forstår ikke helt tror jeg... Det virker kun hvis indholdet af kolonnen er null gør det ikke? Eller er det fordi jeg forveksler den med isnull()
Dem der ikke har noget tal er nul (med et l ) og ikke null.

Men løsningen kunne selvfølgelig være at sætte dem til null mens jeg sorterer og så lave dem om bagefter måske..
Avatar billede erikjacobsen Ekspert
02. december 2004 - 14:45 #5
De bliver opfattet som null hvis de er 0 i forbindelse med sorteringen. Det er ikke "is null" ;)
Jeg skal da lige sige, at jeg ikke er helt sikker på jeg forstår problemet...
Avatar billede anhansen Nybegynder
02. december 2004 - 14:48 #6
Det forstår jeg godt - jeg synes også det var svært at forklare.. ;-)

Men problemet er:
I hver søjle er der et tal som indikerer et vist salg for det år.
Jeg vil så gerne have sorteret søjlen så alle dem der har købt i alle år kommer øverst, derefter kommer alle dem der har købt de sidste år, og så dem der har købt i 2002 og 2004 f.eks (kan undværes), og så alle dem der kun har købt fra 2004 og tilbage, osv.

Ved ikke om det var en bedre forklaring.. :-S

Men jeg prøver lige din løsning...
Avatar billede anhansen Nybegynder
02. december 2004 - 14:52 #7
Tror ikke det virker i c#.
Fejl : Cannot find column nullif([2005]

Det ser ikke ud til at den "opdager" parantesen - for den splitter ved kommaet mellem parenteserne.

Men der nok ikke disse specialfunktioner i .net data klasse.
Avatar billede erikjacobsen Ekspert
02. december 2004 - 14:56 #8
Nej, det er kun i en SQL-sætning i MS SQL det vil virke.
Avatar billede anhansen Nybegynder
02. december 2004 - 14:58 #9
jep... og jeg har jo som sagt lavet det i c# da det er en kombination af mange udtræk som jeg følte blev for langhåret i en stored procedure.
Avatar billede anhansen Nybegynder
03. december 2004 - 12:18 #10
Nå... jeg lukker... Jeg tror ikke det kan lade sig gøre i .net..

Men jeg brugte 2005 DESC, 2004 desc, osv..

Tak for hjælpen..
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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