---
title: "Dubbel SUM"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/94258-dubbel-sum"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Skarre"
published: "2004-01-08T15:00:06.000Z"
updated: "2004-01-13T08:42:48.000Z"
replies: 10
views: 491
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/94258-dubbel-sum"
---

# Dubbel SUM

## #1 — Skarre, 2004-01-08T15:00Z

Jag har information om spelade basketmatcher i tabellen "games" och jag vill räkna ut gjorda poäng, alltså summan "homescore" där ett givet lag var hemmalag plus summan av awayscore där det givna laget var bortalag. Med andra ord vill jag kombinera dessa två frågor:

```
SELECT SUM(homescore) FROM games WHERE hometeam = 1
SELECT SUM(awayscore) FROM games WHERE awayteam = 1;
```

I förlängningen kommer jag även att behöva räkna ut insläppta poäng:

```
SELECT SUM(homescore) FROM games WHERE awayteam = 1
SELECT SUM(awayscore) FROM games WHERE hometeam = 1;
```

... och målskillnad d.v.s. gjorda poäng minus insläppta poäng.

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

## #2 — Gladh, 2004-01-08T15:23Z

Du kan inte kombinera dessa två i en SQL sats eftersom du vill ha information för 2 olika vilkor.

Du kan lösa det med en UNION mellan dina 2 SQL satser då kommer du få tillbaka 1 resultat. Annars så kanske detta fungerar, har inte testat så jag vet fasktiskt inte.

```
SELECT TOP 1 (SELECT SUM(homescore) FROM games WHERE hometeam = 1) as test, (SELECT SUM(awayscore) FROM games WHERE awayteam = 2) as test2 FROM games
```

\- M

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

## #3 — LarsG, 2004-01-08T15:59Z

```
select sum(case when hometeam = 1 then homescore 
                          when awayteam = 1 then awayscore
    else 0 end) as totalScore
from games
where 1 in (hometeam,awayteam)
```

eller om du använder access

```
select sum(iif(hometeam=1,homescore,
                      iif(awayteam=1,awayscore,0))) as totalScore
from games
where 1 in (hometeam,awayteam)
```

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

## #4 — Skarre, 2004-01-08T16:35Z

Du är helt underbar Lars! :)

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

## #5 — Skarre, 2004-01-09T14:42Z

Jag har ytterligare en liten fundering angående detta. När laget inte spelat någon match och dess id således inte finns i tabellen "games" returnerar frågan NULL vilket pajar resultattabellen. Går det att se till att frågan returnerar 0 i detta fall?

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

## #6 — LarsG, 2004-01-09T15:38Z

Har du någon tabell där alla lag finns? Säg att du har en sådan och den heter teams och har kolumnerna

teamid och teamname. I så fall kan du få summa för alla lag med

```
select teamname, 
   sum(case when hometeam = teamid then
       homescore else 0 end + 
case when awayteam = teamid then 
awayscore else 0 end)
from teams left outer join games
  on teamid in (hometeam,awayteam)
group by teamname
```

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

## #7 — Gladh, 2004-01-12T14:22Z

```
select sum(case when hometeam = 1 then homescore 
                          when awayteam = 1 then awayscore
    else 0 end) as totalScore
from games
where 1 in (hometeam,awayteam)
```

Men då får man ju bara en totalsumma och inte 2 delsummor. Kan man få både AwaySum och HomeSum i en och samma SQL Sats.

\- M

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

## #8 — LarsG, 2004-01-12T14:57Z

> Kan man få både AwaySum och HomeSum i en och samma SQL Sats.

Jo visst, det är inga problem.

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

## #9 — Gladh, 2004-01-12T15:29Z

> Jo visst, det är inga problem.

Så bra.. du förtsätter jag att leva i kunskap om att det går, men i okunskap hur man gör :) \*morrrr\*

\- M

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

## #10 — LarsG, 2004-01-12T16:06Z

```
select sum(case when hometeam = 1 then homescore 
                   else 0 end) as totalHomescore,
           sum(case when awayteam = 1 then awayscore
    else 0 end) as totalawayScore
from games
where 1 in (hometeam,awayteam)
```

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

## #11 — Gladh, 2004-01-13T08:42Z

Bläää... det borde jag ju kunnat lista ut. Snygg lösning, men hur snabb är den. Känns nästan som att 2 vanliga SQL frågor hade varit snabbare.

Tack för lösningen. :birp

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/94258-dubbel-sum
