webForumDet fria alternativet

case i en selectsats?

6 svar · 433 visningar · startad av inspiro

inspiroMedlem sedan sep. 2005673 inlägg
#1

Jag hämtar lite data med en vanlig select men vad gäller en av kolumnerna så skulle jag vilja ha ett villkor. Om en inparameter är samma som ett id som hämtas från tabellen så vill jag sätta ett eget värde. Kan man göra nåt sånt här:

SELECT A CASE WHEN (@ID = A) THEN 0 ELSE A, ... FROM Tabell
doggelitoMedlem sedan juni 20003 076 inlägg
#2

Detta borde väl gå: :)

SELECT CASE A WHEN @ID THEN 0 ELSE A END FROM Tabell
inspiroMedlem sedan sep. 2005673 inlägg
#3

Får tyvärr felmeddelandet "felaktig parameter". Använder sql server express kanske ska tilläggas!

doggelitoMedlem sedan juni 20003 076 inlägg
#4

Är @ID och kolumnen A av samma datatyp?

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#5

SQL-server?
Så här kan man skriva.

SELECT (CASE WHEN @ID = A THEN 0 ELSE A END) AS A FROM Tabell
LarsGMedlem sedan dec. 200012 464 inlägg
#6

Posta hela koden och hela felmeddelandet.

inspiroMedlem sedan sep. 2005673 inlägg
#7

Japp, samma datatyp (int). Får bara det felmeddelandet jag skrev när jag körde frågan i sql-server, "felaktig parameter" (samma fel på din sql, Erik). Frågan är den jag skrev typ bara att den hämtar data från några fler kolumner. En vanlig select-sats alltså, förutom det här case-grejjen.

Nu har jag iofs löst det kod-vägen istället, men om man kan göra såna här saker direkt i sql-satsen, visst är det bättre rent prestandamässigt (inte för att just det här exemplet kanske är någon prestandaslukare men jag menar generellt)?

132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)