webForumDet fria alternativet
Logga in / Bli medlem

Select case

Databaser & SQL

8 svar · 156 visningar · startad av theguru

Medlem sedan juli 2000411 inlägg
Frågan#1

Kan nån hjälpa mig?

Jag försöker att i en select sats efter where gör ett vilkor med hjälp av.
Jag vet inte exaxt hur man skriver men jag tänkte mig nåt åt det här hållet.

SELECT CASE @statusid = 10
AND S.StatusId <> 10

för att sedan fortsätta med where satsen.
Jag ser fram emot att se hur jag ska skriva :)

Medlem sedan dec. 200012 464 inlägg
#2

Jag förstår inte alls vad du vill åstadkomma.

case kan man använda så här t.ex.

  select case when @statusid <= 10 then 'Green'
         when @statusid <= 20 then
   'blue'
else 'Magenta' end from ogrish

Kan du förklara lite mer?

Medlem sedan juli 2000411 inlägg
#3

WHERE
A.qqqq = ACS.qqqq
AND S.StatusId = ACS.StatusId
SELECT CASEwhen @statusid <> 10 then AND S.StatusId <> 10
AND A.OwnerId = O.OwnerId

Jag vill alltså lägga till argumentet
AND S.StatusId <> 10
om statusid <> 10

Medlem sedan dec. 200012 464 inlägg
#4
WHERE 
A.qqqq = ACS.qqqq
AND S.StatusId = ACS.StatusId 
AND ((    S.StatusId <> 10 
      and @Statusid <> 10) 
   or @statusid = 10)
Medlem sedan juli 2000411 inlägg
#5

Detta funkar inte riktigt.
Jag vill enbart ha med
@statusid = 10 när det inträffar
annars vill jag utesluta detta ur
where satsen

Medlem sedan dec. 200012 464 inlägg
#6

Vad menar du med att det inte fungerar?

Du kan inte använda case på det sättet som du har tänkt dig. case evalueras när frågan exekveras och inte när den kompileras.

Om du vill ha olika frågor så kan du skriva

if @statusID <> 10
  select ... where ... and statusID <> 10
else
  select ...where ...
Medlem sedan juli 2000411 inlägg
#7

Det har löst sig tack för hjälpen.

Medlem sedan juni 20008 205 inlägg
#8

Av ren nyfikenhet, borde man inte kunna säga

SELECT foo FROM bar WHERE (@statusId = 10 OR statusId <> 10)

:q

Medlem sedan dec. 200012 464 inlägg
#9

Kanske det går i detta fall. Det blir dock skillnad om @statusid är null

262 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)