id | ... | author
---------------
1 | ... | Elisabeth Hagborg
2 | ... | Berndt Sundsten, Birgitta Stenberg
3 | ... | Lasse Ekholm
4 | ... | Laura Trenter
5 | ... | Paul Vaderlind, Ewa Malmborg, Roger Priddy
I en SELECT finns denna ORDER BY.
...
ORDER BY
CASE @SortWay
WHEN 'desc' THEN ' '
ELSE
CASE @SortBy
WHEN 'title' THEN A.title
WHEN 'author' THEN A.author
WHEN 'language' THEN A.language
ELSE
CAST(A.releasedate AS varchar(10))
END
END,
CASE @SortWay
WHEN 'desc' THEN
CASE @SortBy
WHEN 'title' THEN A.title
WHEN 'author' THEN A.author
WHEN 'language' THEN A.language
ELSE
CAST(A.releasedate AS varchar(10))
END
END DESC
Vad jag vill göra nu är att när det skall sorteras efter 'author' så skall det sorteras på efternamnet på den första personen i varje kolumn. Jag vill alltså bara sortera på detta sätt och inte att utdatan skall ändras. Går detta?
Det är dock inte så enkelt i det generella fallet.
Om en författare heter
Lars Erik Van der graaf
vad sorterar man på då? Helst skulle man då vilja ha namnet uppdelat i två olika kolumner och varje enskild författare lagrad som en egen post i en annan tabell.
Först. Ursäkta att jag springer ifrån datorn när jag precis ställt en fråga.
Får felet "Incorrect syntax near the keyword 'WHEN'." på denna kod, är det så du tänkt.
WHEN 'author' THEN substring(author,charindex(' ', author), len(author - charindex(' ', author))
Kan man inte göra så att om namnet är "Lars-Erik Van der Graaf", dubbelnamn brukar som tur är ha bindestreck:), att man sorterar på det som kommer efter första tomrummet " ".