---
title: "Select case"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21760-select-case"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "theguru"
published: "2001-11-15T15:47:00.000Z"
updated: "2001-11-16T16:01:00.000Z"
replies: 8
views: 156
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/21760-select-case"
---

# Select case

## #1 — theguru, 2001-11-15T15:47Z

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 :)

Permalänk: https://www.webforum.nu/p/21760

## #2 — LarsG, 2001-11-15T15:58Z

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?

Permalänk: https://www.webforum.nu/p/353175

## #3 — theguru, 2001-11-15T16:03Z

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

Permalänk: https://www.webforum.nu/p/353176

## #4 — LarsG, 2001-11-15T16:39Z

```
WHERE 
A.qqqq = ACS.qqqq
AND S.StatusId = ACS.StatusId 
AND ((    S.StatusId <> 10 
      and @Statusid <> 10) 
   or @statusid = 10)
```

Permalänk: https://www.webforum.nu/p/353177

## #5 — theguru, 2001-11-16T07:21Z

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

Permalänk: https://www.webforum.nu/p/353178

## #6 — LarsG, 2001-11-16T10:09Z

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 ...
```

Permalänk: https://www.webforum.nu/p/353179

## #7 — theguru, 2001-11-16T11:59Z

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

Permalänk: https://www.webforum.nu/p/353180

## #8 — spango, 2001-11-16T15:05Z

Av ren nyfikenhet, borde man inte kunna säga

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

 :q

Permalänk: https://www.webforum.nu/p/353181

## #9 — LarsG, 2001-11-16T16:01Z

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

Permalänk: https://www.webforum.nu/p/353182

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21760-select-case
