Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med ORDER BY i SQL-Server

Postades av 2004-10-14 11:13:09 - Marcus Granström, i forum sql-server/msde, Tråden har 10 Kommentarer och lästs av 695 personer

Ifall jag satt parametern @nCustomSort = 1 och cv.customSortKey inte är null så sorteras recordsetet efter
customSortKey vilket fungerar. Kolla nedan:
<code>
...
ORDER BY CASE WHEN @nCustomSort = 1 THEN (CASE WHEN cv.customSortKey IS NULL THEN 65535
ELSE cv.customSortKey
end)
WHEN @nCustomSort = 2 THEN cd.isVirtual
END
, (CASE WHEN cols.ORDINAL_POSITION IS NULL THEN 65535
ELSE cols.ORDINAL_POSITION
end)
GO</code>

Det jag vill kunna är att sortera även efter cd.ordinalPosition (kolla nedan), men det fungerar inte. Hur ska jag göra för att sortera efter två tabeller efter denna kod?
<code>
...
ORDER BY CASE WHEN @nCustomSort = 1 THEN (CASE WHEN cv.customSortKey IS NULL THEN 65535
ELSE cv.customSortKey, cd.ordinalPosition
end)
WHEN @nCustomSort = 2 THEN cd.isVirtual
END
, (CASE WHEN cols.ORDINAL_POSITION IS NULL THEN 65535
ELSE cols.ORDINAL_POSITION
end)
GO</code>


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-14 11:18:00 - Kalle Dahlberg

Hej!

Du får gärna ta med hela frågan och även tala om vad som inte fungerar, genererar den ett error eller funkar inte sorteringen som den ska?


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-14 20:57:55 - Per Karlsson

Om jag förstår dig rätt vill du sortera på både cv.customSortKey och cd.ordinalPosition om @nCustomSort=1.
Detta kan du åstadkomma på följande sätt:
<CODE>
ORDER BY
CASE WHEN @nCustomSort = 1 THEN COALESCE(cv.customSortKey, 65535)
WHEN @nCustomSort = 2 THEN cd.isVirtual END,
CASE WHEN @nCustomSort = 1 THEN cd.ordinalPosition ELSE 1 END,
COALESCE(cols.ORDINAL_POSITION, 65535)
</CODE>

Tog mig friheten att snygga upp sql-satsen litegrann. Du kan använda coalesce för att slippa ha en case-sats vid null-värden.

/Pelle


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-15 14:48:17 - Peter Andersson

Hej

Bara en kommentar angående COALESCE. Den används (främst) om det är flera kolumner eller expressions man vill kolla med NULL. För en kolumn eller expression så funkar det lika bra med ISNULL:
Ex. ISNULL(cv.customSortKey, 65535)

Skillnaden är att COALSCE returnerar NULL om alla expressions är NULL. Det gör inte ISNULL, den returnerar alltid ett värde.

Lite trickig ORDER BY, men jag hoppas att jag tolkat det rätt och då borde det se ut så här:
<sql>ORDER BY
CASE WHEN @nCustomSort = 1 THEN ISNULL(cv.customSortKey, 65535)
WHEN @nCustomSort = 2 THEN cd.isVirtual END,
CASE WHEN @nCustomSort = 1 THEN cd.ordinalPosition ELSE 1 END,
ISNULL(cols.ORDINAL_POSITION, 65535)
</sql>

/Peter


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-15 15:55:53 - Kalle Dahlberg

>Skillnaden är att COALSCE returnerar NULL om alla expressions är NULL. Det gör inte ISNULL, den >returnerar alltid ett värde.

Ehhh???

select isnull(null, null)

isnull funkar precis som coalesce fast utan möjlighet att ange fler värden än 2.


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-15 17:02:02 - Per Karlsson

Enda anledningen att ISNULL finns kvar i SQL Server 7 och senare versioner är för bakåtkompatibilitet. Därför: använd COALESCE. Båda fungerar dock lika bra i det här fallet.

/Pelle


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-15 19:33:50 - Kristofer Aaa

Skulle jag kunna få en officiell länk eller hänvisning till dokumentation som talar om för mig att ISNULL är på väg att försvinna?

Jag skulle vara väldigt tacksam för det.


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-15 21:02:20 - Per Karlsson

Jag förhastade mig nog lite i mitt förra svar. ISNULL lär inte försvinna, men det är en äldre metod som oftast kan ersättas med COALESCE. COALESCE är ANSI-SQL, vilket inte ISNULL är. Men i exemplet ovan finns det väl annars inget speciellt skäl att använda coalesce istället för isnull.


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-16 11:12:13 - Peter Andersson

Kalle:
>select isnull(null, null)

Självklart om man sätter att isnull ska returnera null om expression är null så blir det null. Knappast något värde i det?


/Peter


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-16 11:49:16 - Kalle Dahlberg

OK, förstå inte då. Du säger att skillnaden på ISNULL och COALESCE är att ISNULL alltid returnerar ett värde (se ditt tidigare inlägg). Jag säger att de fungerar likadant förutom att COALESCE klarar av fler argument. Eftersom mitt exempel inte var klart nog så tar jag ett till:

<code>
declare @i int, @j int

select @i = NULL
select @j = NULL

select COALESCE(@i, @j)
select ISNULL(@i, @j)
</code>

I ditt inlägg skickar du in en konstant som andra argument. Det kan du lika gärna göra med COALESCE. Det är INGEN skillnad. Eller tycker du fortfarande det???

/Kalle


Svara

Sv: Problem med ORDER BY i SQL-Server

Postades av 2004-10-16 12:12:24 - Peter Andersson

Jodå, jag insåg min STOORA tankevurpa redan innan detta inlägg.
Ber om ursäkt.

/Peter


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
560
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies