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


Hjälp med sql-fråga

Postades av 2003-10-25 13:47:31 - Andreas Lindh, i forum sql-server/msde, Tråden har 2 Kommentarer och lästs av 880 personer

Jag hr den här sql-frågan som jag använt i Mysql
<code>
SELECT s_deltagande_lag.ID, s_deltagande_lag.Namn,s_deltagande_lag.serie_id,
@games := Count(s_matcher.ID) AS games,
@win := Sum((s_deltagande_lag.ID=lagid_a And resultat_a > resultat_b )Or (s_deltagande_lag.ID=lagid_b And resultat_a<resultat_b)) AS win,
@tie := Sum(resultat_a=resultat_b) AS tie,
@lost := ((Count(s_matcher.ID))-(Sum((s_deltagande_lag.ID=lagid_a And resultat_a > resultat_b )Or (s_deltagande_lag.ID=lagid_b And resultat_a<resultat_b)))-(Sum(resultat_a=resultat_b))) as lost,
@poang:= ((Sum((s_deltagande_lag.ID=lagid_a And resultat_a > resultat_b )Or (s_deltagande_lag.ID=lagid_b And resultat_a<resultat_b))*2) + (Sum(resultat_a=resultat_b))) AS poang,
@plus := Sum((s_deltagande_lag.ID=lagid_a)*resultat_a + (s_deltagande_lag.ID=lagid_b)*resultat_b) as plus,
@minus := Sum((s_deltagande_lag.ID=lagid_a)*resultat_b + (s_deltagande_lag.ID=lagid_b)*resultat_a) as minus,
@plusminus := Sum((s_deltagande_lag.ID=lagid_a)*resultat_a + (s_deltagande_lag.ID=lagid_b)*resultat_b) - Sum((s_deltagande_lag.ID=lagid_a)*resultat_b + (s_deltagande_lag.ID=lagid_b)*resultat_a) as plusminus
FROM s_deltagande_lag LEFT JOIN s_matcher ON s_deltagande_lag.ID=s_matcher.lagid_a Or s_deltagande_lag.ID=s_matcher.lagid_b
where s_deltagande_lag.serie_ID = 42 and s_matcher.uppdaterad = 1
GROUP BY ID, Namn ORDER BY 8 DESC, 11 DESC, 9 DESC, 10 ASC
</code>

Nu har jag försökt skriva om den till Mssql-server men får det inte att fugnera
<code>
Select
s.ID, s.Namn,
Count(s.ID) AS games,
-Sum((s.ID = m.lagid_a And m.resultat_a > m.resultat_b ) Or (s.ID = m.lagid_b And m.resultat_a < m.resultat_b)) AS win,
-Sum(m.resultat_a=m.resultat_b) AS tie,
-((Count(s.ID))-(Sum((s.ID=lagid_a And m.resultat_a > m.resultat_b )Or (s.ID=lagid_b And m.resultat_a < m.resultat_b)))-(Sum(m.resultat_a = ,.resultat_b))) as lost,
-((Sum((s.ID=lagid_a And m.resultat_a > m.resultat_b )Or (s.ID = m.lagid_b And m.resultat_a < m.resultat_b))*2) + (Sum(m.resultat_a = m.resultat_b))) AS poang,
-Sum((s.ID=lagid_a)* m.resultat_a + (s.ID=m.lagid_b)* m.resultat_b) as plus,
-Sum((s.ID=lagid_a)* m.resultat_b + (s.ID=m.lagid_b)* m.resultat_a) as minus,
-Sum((s.ID=lagid_a)* m.resultat_a + (s.ID=m.lagid_b)* m.resultat_b) - Sum((s.ID=lagid_a)* m.resultat_b + (s.ID= m.lagid_b)* m.resultat_a) as plusminus
FROM s_deltagande_lag s LEFT JOIN s_matcher m
On s.ID=m.lagid_a Or s.ID=m.lagid_b
where s.serie_ID = @SerieID and m.uppdaterad = 1
Group by s.ID, s.Namn
Order by 7 DESC, 10 DESC, 8 DESC, 9 ASC
</code>

Felmeddelande
<code>
Incorrect Syntax Near '=' På rad 4
</code>

Rad 4 är
<code>
-Sum((s.ID = m.lagid_a And m.resultat_a > m.resultat_b ) Or (s.ID = m.lagid_b And m.resultat_a < m.resultat_b)) AS win,
</code>


Svara

Sv: Hjälp med sql-fråga

Postades av 2003-10-26 20:32:24 - Ola Lindfeldt

Jag känner inte till MySQL syntaxen. Den verkar lite speciell. Alltså pratar vi om "resultatet av logiska jämförelse i select-delen"?
Det tror jag icke är möjligt i T-SQL på det sättet.
Jag tror du ska spana efter syntaxen "SELECT CASE WHEN ..."
(kolla i T-Sql hjälpen).

Ola






Svara

Sv: Hjälp med sql-fråga

Postades av 2003-10-27 12:01:20 - Andreas Lindh

Tack Ola.

Löste det så här
<code>
Select
s.ID, s.Namn,s.serie_id,
Count(s.ID) AS games,
sum(case when (s.ID = m.lagid_a And m.resultat_a > m.resultat_b ) Or (s.ID = m.lagid_b And m.resultat_a < m.resultat_b) then 1 else 0 end) as win,
sum(case when (resultat_a = resultat_b) then 1 else 0 end) as tie,
((Count(s.ID))-(sum(case when (s.ID = m.lagid_a And m.resultat_a > m.resultat_b ) Or (s.ID = m.lagid_b And m.resultat_a < m.resultat_b) then 1 else 0 end)+sum(case when (resultat_a = resultat_b) then 1 else 0 end))) as lost,
((sum(case when (s.ID = m.lagid_a And m.resultat_a > m.resultat_b ) Or (s.ID = m.lagid_b And m.resultat_a < m.resultat_b) then 1 else 0 end) *2) + sum(case when (resultat_a = resultat_b) then 1 else 0 end)) as poang,
Sum((case when s.id = m.lagid_A then 1 else 0 end)*m.resultat_a +(case when s.id = m.lagid_b then 1 else 0 end)*m.resultat_b) as plus,
Sum((case when s.id = m.lagid_A then 1 else 0 end)*m.resultat_b +(case when s.id = m.lagid_b then 1 else 0 end)*m.resultat_a) as minus,
(Sum((case when s.id = m.lagid_A then 1 else 0 end)*m.resultat_a +(case when s.id = m.lagid_b then 1 else 0 end)*m.resultat_b)-Sum((case when s.id = m.lagid_A then 1 else 0 end)*m.resultat_b +(case when s.id = m.lagid_b then 1 else 0 end)*m.resultat_a)) as plusminus
FROM s_deltagande_lag s LEFT JOIN s_matcher m
On s.ID=m.lagid_a Or s.ID=m.lagid_b
where s.serie_ID = @SerieID and m.uppdaterad = 1
Group by s.ID, s.Namn,s.serie_id
order by poang desc, Plusminus Desc, Plus Desc
</code>


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
593
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