---
title: "SQL fråga som inte gör som jag vill"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/42464-sql-fråga-som-inte-gör-som-jag-vill"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "mattiasnordin"
published: "2002-04-25T08:59:57.000Z"
updated: "2002-04-25T14:42:08.000Z"
replies: 7
views: 322
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/42464-sql-fråga-som-inte-gör-som-jag-vill"
---

# SQL fråga som inte gör som jag vill

## #1 — mattiasnordin, 2002-04-25T08:59Z

```
sql = "SELECT Namn, COUNT(1) AS Antal, COUNT(0) AS NegAntal FROM sport_bokningar "
sql = sql & " GROUP BY Namn ORDER BY 2 DESC, 3 DESC"
```

Jag vill skapa en fråga som räknar ut antalet personer som har deltagit i ett viss happening (=1 i Status kolumnen i min tabell) och som dessutom sorterar dem i ordningen mest frekventa besökare överst. Min fråga fungerade innan jag började krångla till det hela... Deltagarna fyller även i om de inte kan deltaga (=0 i status kolumnen)...
Det jag nu försöker lägga till i min fråga är att den ska sortera i första hand på de som kommer (=1) och i andra hand på de som inte kommer (=2)...

Jag får inte något fel när jag kör frågan ovan men både "Antal" och "NegAntal" blir samma värde vilket inte stämmer...

Please help...

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

## #2 — mattiasnordin, 2002-04-25T09:17Z

```
sql = "SELECT Namn, COUNT(Status) AS Antal FROM sport_bokningar "
sql = sql & " WHERE Status = 1 GROUP BY Namn ORDER BY 2 DESC" 

sql2 = "SELECT Namn, COUNT(Status) AS NegAntal FROM sport_bokningar "
sql2 = sql2 & " WHERE Status = 0 GROUP BY Namn ORDER BY 2 DESC"
```

Hmmm... Tydligen så fungerar inte Count som jag trodde. Ovan fungerar som jag vill MEN hur slår jag ihop dessa frågor så att det blir en och samma record set????

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

## #3 — LarsG, 2002-04-25T10:32Z

```
select namn, 
          sum(case when status = 1 then 1 else 0 end) as s1,
                     sum(case when status = 0 then 1 else 0 end) as s2
from sport_bokningar where status in (1,2) 
group by name order by s1,s2
```

Sen så beror det på vilken databashanterare du har om det fungerar eller inte

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

## #4 — mattiasnordin, 2002-04-25T11:35Z

```
sql = "select namn, " 
sql = sql & " sum(case when status = 1 then 1 else 0 end) as s1, "
sql = sql & " sum(case when status = 0 then 1 else 0 end) as s2 "
sql = sql & " from sport_bokningar where status in (1,2) "
sql = sql & " group by name order by s1,s2 "
```

Ger följande fel:

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'sum(case when status = 1 then + 1 else 0 end)'. 

/kopia av staff_sport/page_design.asp, line 36
```

Jag kör access 97 som databas... 

Spelar du innebandy, Lars G?   :q

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

## #5 — LarsG, 2002-04-25T11:40Z

Ok, access-specifik lösning

```
sql = "select namn, " 
sql = sql & " sum(iif(status = 1,1,0) as s1, "
sql = sql & " sum(iif(status = 0,1,0) as s2 "
sql = sql & " from sport_bokningar where status in (0,1) "
sql = sql & " group by name order by 2,3 "
```

> Spelar du innebandy, Lars G?

Jo, understundom händer det.

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

## #6 — mattiasnordin, 2002-04-25T13:44Z

Hmmm... verkar som att jag har hittat en utmaning år SQL Guden Lars G... Inte varje dag...

Får följande fel när jag kör din fråga x( 

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'sum(iif(status = 1,1,0) as s1, sum(iif(status = 0,1,0) as s2 from sport_bokningar where status in (0,1) group by name order by 2,3'. 

/kopia av staff_sport/page_design.asp, line 43
```

 

Rad 43 är som vanligt:  "set rs = connect.execute(sql)"

PS Har ni bredband så är det, om inte bra musik, en otroligt trevlig DJ som jobbar på denna radiostation. Hon är online nu (webcam).  §e 
Se <http://www.topradio.be/windowsmedia/topavhi.asx> 
DS

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

## #7 — LarsG, 2002-04-25T14:22Z

Äsch då, det är bara parenteser som saknas

```
sql = "select namn, " 
sql = sql & " sum(iif(status = 1,1,0)) as s1, "
sql = sql & " sum(iif(status = 0,1,0)) as s2 "
sql = sql & " from sport_bokningar where status in (0,1) "
sql = sql & " group by name order by 2,3 "
```

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

## #8 — mattiasnordin, 2002-04-25T14:42Z

Du är verkligen gud på det här !!!!  :f 

```
sql = "select Namn, " 
sql = sql & " sum(iif(Status = 1,1,0)) as Antal, "
sql = sql & " sum(iif(Status = 0,1,0)) as NegAntal "
sql = sql & " from sport_bokningar where Status in (0,1) "
sql = sql & " group by Namn order by 2 DESC,3 DESC "
```

Fungerar hur bra som helst. Resultatet är perfekt. Så mycket lättare livet blir när man lär sig skriva lite mer advancerade frågor istället för att sortera med ifsatser och liknande... glad som fan"!

```
'sql = "SELECT Namn, COUNT(Status) AS Antal FROM sport_bokningar "
'sql = sql & " WHERE Status = 1 GROUP BY Namn ORDER BY 2 DESC" 
'sql = sql & " UNION "
'sql = sql & " SELECT Namn, COUNT(Status) AS NegAntal FROM sport_bokningar "
'sql = sql & " WHERE Status = 0 GROUP BY Namn ORDER BY 2 DESC"
```

Jag labbade lite med UNION men fick inte det resultatet jag ville ha. Men som sagt jag är inte gud på detta... Man lär sig varje dag..

Angående innebandyn, vi är ett par datanissar i Uppsala som spelar innebandy på Torsdagar klockan 21:00. Vi behöver mer folk så är du intresserad så får du höra av dig.  // Mattias

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/42464-sql-fråga-som-inte-gör-som-jag-vill
