---
title: "Summera ihop massa grejer i samma SQL-fråga..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/157115-summera-ihop-massa-grejer-i-samma-sql-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "oskars"
published: "2007-02-13T07:54:55.000Z"
updated: "2007-03-12T10:40:55.000Z"
replies: 17
views: 996
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/157115-summera-ihop-massa-grejer-i-samma-sql-fråga"
---

# Summera ihop massa grejer i samma SQL-fråga...

## #1 — oskars, 2007-02-13T07:54Z

Hallå!

Jag har en liten fråga :)

Kan jag summera ihop massa olika tal från en tabell i samma SQL-fråga?

Så här ungefär:

```
SELECT * FROM minTabell COUNT(intAlt = 1) AND COUNT(intAlt2 = 1) AND COUNT(intAlt3 = 1) WHERE sID = 200
```

och så loopar man ut det så att det ser ut så här typ:

```
sID         intAlt      intAlt2     intAlt3
200        10          5           12
```

Den ska alltså summera ihop antal poster som har exempelvis intAlt = 1 och där sID = 200

Nu kan jag förstå om jag förklarat konstigt, men jag hoppas ni förstår!

Går det att göra så här?

  :stud

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

## #2 — Peter S, 2007-02-13T08:23Z

```
SELECT SUM(case when intAlt  = 1 then 1 else 0 end)
     , SUM(case when intAlt2 = 1 then 1 else 0 end)
     , SUM(case when intAlt3 = 1 then 1 else 0 end)
  FROM minTabell
 WHERE sID = 200
```

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

## #3 — oskars, 2007-02-13T08:26Z

kooolt! Tack tack!

Men hur skriver jag när jag ska loopa ut de ihopräknade siffrorna? :)

Tack återigen!

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

## #4 — oskars, 2007-02-13T08:30Z

> **Peter S skrev:**
>
> ```
> SELECT SUM(case when intAlt  = 1 then 1 else 0 end)
>      , SUM(case when intAlt2 = 1 then 1 else 0 end)
>      , SUM(case when intAlt3 = 1 then 1 else 0 end)
>   FROM minTabell
>  WHERE sID = 200
> ```

typ så här?

```
SELECT SUM(case when intAlt  = 1 then 1 else 0 end) AS antal1
     , SUM(case when intAlt2 = 1 then 1 else 0 end) AS antal2
     , SUM(case when intAlt3 = 1 then 1 else 0 end) AS antal3
  FROM minTabell
 WHERE sID = 200
```

Ska testa det snart :D :D :D :D

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

## #5 — oskars, 2007-02-13T09:15Z

Njaeh, den vill inte...

kolla här:

```
<table width="100%" border="0" cellpadding="5" cellspacing="0" style="margin:0 0 20px 0;background:#9999ff;text-align:left;">
	<tr style="background:#333;color:#FFF;">
		<td width="50%"><b>Namn</b></td>
		<td width="10%"><b>Ordrar#</b></td>
		<td width="20%"><b>Telefonånger</b></td>
	</tr>
<%
	getDatabase = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=; DATABASE=; UID=;PASSWORD=; OPTION=3"

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open = getDatabase

	Set Recset = Server.CreateObject("ADODB.Recordset")
	SQL = "Select * FROM Users WHERE Grad = 1 ORDER BY Namn asc"
	RecSet.Open SQL, Connect, 1, 2
	
	If RecSet.EOF Then
		Response.Write("Tomt!")
	Else
	
	Color = "EEE"
	Do Until RecSet.EOF
	
		' Summa antalet KOrder = 1 och antalet KOrder = 2
		Set oCount = Connect.Execute("SELECT SUM(case when KOrder = 1 then 1 else 0 end) as antalOrdrar, SUM(case when KOrder = 2 then 1 else 0 end) as antalTelanger FROM Arkiv WHERE sID = '"&RecSet("sID")&"'")
		antalOrdrar = oCount("antalOrdrar")
		antalTelanger = oCount("antalTelanger")
		oCount.close
		Set oCount=nothing
						
		
		procentAntal = procentAntalGS + procentAntalOrdrar
		

	%>
	<tr style="background:#<%=Color%>;">
		<td><%=RecSet("Namn")%></td>
		<td><%=antalOrdrar%></td>
		<td><%=antalTelanger%></td>
	</tr>
	
	<%
	
		If Color = "EEE" Then
			Color = "FCFCFC"
		Else
			Color = "EEE"
		End If
	
	RecSet.MoveNext
	Loop
	End If
%>
</table>
```

Feltyp: ADODB.Recordset (0x800A0CC1) Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

Vad har jag gjort för fel?

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

## #6 — @nders, 2007-02-13T09:20Z

Vilken rad pekar felet på då?

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

## #7 — oskars, 2007-02-13T09:22Z

```
Set oCount = Connect.Execute("SELECT SUM(case when KOrder = 1 then 1 else 0 end) as antalOrdrar, SUM(case when KOrder = 2 then 1 else 0 end) as antalTelanger FROM Arkiv WHERE sID = '"&RecSet("sID")&"'")
```

		

:)

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

## #8 — @nders, 2007-02-13T09:29Z

TJa, då finns väl inte fältet sID i *RecSet*?

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

## #9 — oskars, 2007-02-13T09:38Z

löjligt. jag skäms.

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

## #10 — oskars, 2007-02-13T09:43Z

Det fungerar så otroligt vackert nu! Jag tror inte ni vill veta hur jag löste samma problem på ett annat sätt! Då måste ni säga till i så fall :D

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

## #11 — oskars, 2007-02-13T09:48Z

Hur gör jag om jag vill hämta två olika data från två olika tabeller på samma sätt?

säg att jag vill kolla om intAlt1 = 1 i minTabell1 och intAlt2 = 1 i minTabell2

hm... och hur gör man egenltigen för att sortera efter t.ex "antalOrdrar".. ORDER BY antalOrdrar funkar inte i SQL-frågan ovan!

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

## #12 — LarsG, 2007-02-13T10:47Z

> säg att jag vill kolla om intAlt1 = 1 i minTabell1 och intAlt2 = 1 i minTabell2

Kan du vara mer specifik? Ge exempel på datainnehåll och förväntat resultat.

> hm... och hur gör man egenltigen för att sortera efter t.ex "antalOrdrar".. ORDER BY antalOrdrar funkar inte i SQL-frågan ovan!

På vilket sätt fungerar det inte? Återigen, var mer specifik.

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

## #13 — oskars, 2007-02-13T10:49Z

> **LarsG skrev:**
>
> > säg att jag vill kolla om intAlt1 = 1 i minTabell1 och intAlt2 = 1 i minTabell2
>
> 
> 
> Kan du vara mer specifik? Ge exempel på datainnehåll och förväntat resultat.
> 
> .

Summering av antal poster, precis som ovan :)

> **LarsG skrev:**
>
> > hm... och hur gör man egenltigen för att sortera efter t.ex "antalOrdrar".. ORDER BY antalOrdrar funkar inte i SQL-frågan ovan!
>
> 
> 
> På vilket sätt fungerar det inte? Återigen, var mer specifik.

Kort och gott så sorteras inte listan efter det jag specificerat. Det rör sig inte överhuvudtaget.   :r

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

## #14 — LarsG, 2007-02-13T16:43Z

Det är fortfarande för vagt.

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

## #15 — oskars, 2007-03-06T13:54Z

Ska försöka lösa mitt sista problem här...

Med följande kod, får jag följande felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)
\[MySQL\]\[ODBC 3.51 Driver\]\[mysqld-5.0.24a-community-nt\]The used SELECT statements have a different number of columns

Jag har trippelkollat så att dom båda tabellerna har rätta antalet kolumner, och alla kolumnerna har rätt egenskaper... varför funkar det inte för? Det jag vill göra är att räkna ihop lite grejer (vad ser ni nedanför) från 2st olika kolumner!

```
' Summa antalet KOrder = 1 och antalet KOrder = 2
Set oCount = Connect.Execute("SELECT SUM(case when KOrder = 1 then 1 else 0 end) as antalOrdrar, " & _
							         "SUM(case when KOrder = 2 then 1 else 0 end) as antalTelanger, " & _
							         "SUM(case when KOrder = 3 then 1 else 0 end) as antalReturer, " & _
							         "SUM(case when KOrder = 4 then 1 else 0 end) as antalAA, " & _
							         "SUM(case when KOrder = 6 then 1 else 0 end) as antalSlutbetalda " & _
							         "FROM Arkiv WHERE sID = '"&RecSet("Namn")&"' " & _
							         "UNION SELECT SUM(case when KOrder = 5 then 1 else 0 end) as antalEjgodkanda " & _
							         "FROM ArkivUtanOrdernummer WHERE sID = '"&RecSet("Namn")&"'")
antalOrdrar = oCount("antalOrdrar")
antalTelanger = oCount("antalTelanger")
antalReturer = oCount("antalReturer")
antalAA = oCount("antalAA")
antalSlutbetalda = oCount("antalSlutbetalda")
antalEjgodkanda = oCount("antalEjgodkanda")
oCount.close
Set oCount=nothing
```

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

## #16 — @nders, 2007-03-06T16:18Z

Du måste ha samma antal fält i dina UNION-delar.

```
SELECT första_fältet, andra_fältet, tredje_fältet
UNION
SELECT fjärde_fältet, femte_fältet, sjätte_fältet
```

inte

```
SELECT första_fältet, andra_fältet, tredje_fältet, fjärde_fältet, femte_fältet
UNION
SELECT sjätte_fältet
```

Om du vill ha med en till summa från en annan **tabell**, lägg med det som en subquery då istället.

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

## #17 — oskars, 2007-03-12T10:14Z

Jag har sökt på "sub query" på google... och fått fram det här: <http://www.smart-soft.co.uk/Oracle/advanced-sql-tutorial.htm>

nu är frågan hur jag gör en subquery tíll min sql-fråga... har försökt att fixa det själv innan jag frågar, men jag förstår inte riktigt hru man gör :/

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

## #18 — @nders, 2007-03-12T10:40Z

Det som är inom parentes är din subquery:

```
SELECT 
	första_fältet, andra_fältet, tredje_fältet, fjärde_fältet, femte_fältet,
	(SELECT sjättefältet FROM någon_tabell) AS sjätte_fältet
FROM
	tabell
...
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/157115-summera-ihop-massa-grejer-i-samma-sql-fråga
