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?
8 svar · 156 visningar · startad av theguru
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 :)
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?
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
WHERE
A.qqqq = ACS.qqqq
AND S.StatusId = ACS.StatusId
AND (( S.StatusId <> 10
and @Statusid <> 10)
or @statusid = 10)
Detta funkar inte riktigt.
Jag vill enbart ha med
@statusid = 10 när det inträffar
annars vill jag utesluta detta ur
where satsen
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 ...
Det har löst sig tack för hjälpen.
Av ren nyfikenhet, borde man inte kunna säga
SELECT foo FROM bar WHERE (@statusId = 10 OR statusId <> 10)
:q
Kanske det går i detta fall. Det blir dock skillnad om @statusid är null