Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hur skirver man en CASE i under WHERE ?

Postades av 2006-01-13 00:34:42 - Gert Lindholm, i forum sql-server/msde, Tråden har 5 Kommentarer och lästs av 881 personer

Håller på med min invecklade SELECT och har fått till det mesta. men nu vill jag kunna via en dropdown list kunna välja ut en specifik omgång eller över 10 eller under 10. Testat följande men får error 170 inccorect syntaxl near <.

Tar jag bort över eller under 10 så får jag error 170 'Inncorect syntax near =

Här är hur jag gjort hitintills.

 
WHERE  Case WHEN @OmgangsVal = 1 THEN r.Omgang <10
                          ELSE @OmgangsVal  = 2 THEN r.Omgang >10
                          ELSE Omgang = @OmgangsVal
                          END  


Hela min SELECT som följer:

CREATE PROCEDURE Ubc_Totalt
@OmgangsVal Int
	AS
	SET NOCOUNT ON;

SELECT     TOP 100 PERCENT s.Namn + ' ' + s.ENamn, SUM(r.Serier) AS [Antal serier], CAST(SUM(r.Resultat * 1.0) / SUM(r.Serier) AS Decimal(5 , 2)) AS Snitt, SUM(r.Poang) AS Poäng,
                          (SELECT     SUM(Serier)
                            FROM          resultat
                            WHERE      Spelare = s.ID AND H_B = 'H') AS [Serier hemma],
                          (SELECT     CAST(SUM(Resultat * 1.0) / SUM(Serier) AS Decimal(5, 2))
                          FROM         resultat r
                            WHERE      Spelare = s.ID AND H_B = 'H' )AS [Snitt Hemma],
                          (SELECT     SUM(Poang)
                            FROM          resultat 
                            WHERE      Spelare = s.ID AND H_B = 'H') AS [Poäng Hemma],
                          (SELECT     SUM(Serier)
                            FROM          resultat
                            WHERE      Spelare = s.ID AND H_B = 'B') AS [Serier borta],
                           (SELECT     CAST(SUM(Resultat * 1.0) / SUM(Serier) AS Decimal(5, 2))
                            FROM         resultat
                            WHERE      Spelare = s.ID AND H_B = 'B' )AS [Snitt Borta],                          
                          (SELECT     SUM(Poang)
                            FROM          resultat
                            WHERE      Spelare = s.ID AND H_B = 'B') AS [Poäng Borta], CAST(SUM(r.Poang * 1.0) / SUM(r.Serier)AS Decimal(5, 2))AS [Poäng Snitt], MAX(r.Resultat) AS Bästa, 
                      Min(Case When r.serier=4 then r.resultat else Null end) AS [Sämsta]
FROM         tuser1316.medlemmar s INNER JOIN
                      tuser1316.Resultat r ON s.ID = r.Spelare
WHERE  (Case WHEN @OmgangsVal = 1 THEN r.Omgang <10
                          ELSE @OmgangsVal  = 2 THEN r.Omgang >10
                          ELSE Omgang = @OmgangsVal
                          END)  
GROUP BY s.Namn + ' ' + s.ENamn, s.ID
ORDER BY ROUND(SUM(r.Resultat) / SUM(r.Serier * 1.0), 2, 1) DESC
GO



Gert


Svara

Sv: Hur skirver man en CASE i under WHERE ?

Postades av 2006-01-13 08:02:13 - Jenny Månsson

Vad jag känner till kan man endast använda case i select satsen och inte i where clausen...
Hinner tyvärr inte titta närmare på din fråga just nu om hur du ska göra istället men se om du kan skriva om case i select istället eller kanske använda Having.


Svara

Sv: Hur skirver man en CASE i under WHERE ?

Postades av 2006-01-13 08:31:00 - Jonas Persson

Du kanske kan prova en dynamisk uppbyggnad av satsen, kolla t ex på http://www.sqlservercentral.com/columnists/rmarda/howtobuilddynamicstoredprocedures.asp


Svara

Sv:Hur skirver man en CASE i under WHERE ?

Postades av 2006-01-21 15:05:01 - Per Karlsson

Ett sätt att lösa det är att använda OR:
<CODE>
...
WHERE
(@OmgangsVal = 1 AND r.Omgang <10)
OR
(@OmgangsVal = 2 AND r.Omgang >10)
OR
(@OmgangsVal <> 2 AND @OmgangsVal <> 1 AND Omgang = @OmgangsVal)
...
</CODE>

Detta kan dock vara en risk om sql-frågan är prestandakritisk då OR-satser lätt drar ner prestanda.

/Pelle


Svara

Sv: Hur skirver man en CASE i under WHERE ?

Postades av 2006-02-07 11:16:34 - Gert Lindholm

Jag fick skriva en sådan sats för varje SELECT då fick jag med allt.
Men det blev många rader...

Tack för hjälpen! :)


Svara

Sv:Hur skirver man en CASE i under WHERE ?

Postades av 2006-02-10 13:47:44 - micha hagen

men är inte problemet att du har två st else i din case?


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
498
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies