DinoMedlem sedan sep. 20011 914 inlägg Har koden nedan där jag skall kunna sortera beroende på värden i @sort och @way
DECLARE @sort nvarchar(50), @way nvarchar(50)
SET @sort = 'lName'
SET @way = 'desc'
SELECT ...
FROM ...
WHERE ...
ORDER BY
CASE @sort
WHEN 'fName' THEN c_fName
WHEN 'lName' THEN c_lName
WHEN 'city' THEN c_city
ELSE c_regdate
END
IF @way = 'desc' THEN DESC --Om @way = desc då sortera efter DESC annars default
men får dessa felmeddelanden:
1. Syntax error converting datetime from character string.
2. Incorrect syntax near the keyword 'THEN'.
Hur skall jag lösa detta?
LarsGMedlem sedan dec. 200012 464 inlägg SELECT ...
FROM ...
WHERE ...
ORDER BY
case @way
when 'desc' then ' '
else
CASE @sort
WHEN 'fName' THEN c_fName
WHEN 'lName' THEN c_lName
WHEN 'city' THEN c_city
ELSE cast(c_regdate as varchar(10))
END end,
case @way
when 'desc' THEN
CASE @sort
WHEN 'fName' THEN c_fName
WHEN 'lName' THEN c_lName
WHEN 'city' THEN c_city
ELSE cast(c_regdate as varchar(10))
END end desc
DinoMedlem sedan sep. 20011 914 inlägg Tackar det funkar fint :), men hur? Varför två "case @way when 'desc'", varför inte en else eftersom det bara kan vara antingen eller. Och varför "when 'desc' then ' '". Och du har ju satt en DESC sist så varför blir det inte desc hela tiden.
Engine^Medlem sedan dec. 20003 887 inlägg Jag blev nyfiken på det där med hur jag också... Jag tycker att något som nedan borde fungera
SELECT ...
FROM ...
WHERE ...
ORDER BY
CASE @sort
WHEN 'fName' THEN c_fName
WHEN 'lName' THEN c_lName
WHEN 'city' THEN c_city
ELSE
cast(c_regdate as varchar(10))
END
CASE @way
WHEN 'desc' THEN ' ' [blue]--måste det läggas in ett mellanslag kanske?[/blue]
END
CASE @way
WHEN 'desc' THEN DESC
END
LarsGMedlem sedan dec. 200012 464 inlägg desc är ett attribut (inte ett uttryck) så det går inte att göra så.
Det är också därför man behöver två uttryck i order by. Om @way = 'desc' så blir första uttrycket en konstant dvs, det har ingen inverkan på sorteringen utan det blir enbart det andra uttrycket som används.
Engine^Medlem sedan dec. 20003 887 inlägg Ok! Alltid trevligt att lära sig saker :)