---
title: "Summera och gruppera"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/171269-summera-och-gruppera"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "devotion"
published: "2008-05-05T19:41:50.000Z"
updated: "2008-09-30T19:11:28.000Z"
replies: 9
views: 894
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/171269-summera-och-gruppera"
---

# Summera och gruppera

## #1 — devotion, 2008-05-05T19:41Z

Hej på er!

Jag har några tabeller som jag hämtar data från enligt:

```
	sSQL =" SELECT  CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType," _
		& " tblTime.[Time] AS Hours, tblTime.[Time]* 60 AS Minutes" _
		& " FROM tblcustomer" _
		& " INNER JOIN tblTask" _
		& " ON tblCustomer.[Nr] = tblTask.CustomerNr" _
		& " LEFT JOIN tblTime" _
		& " ON tblTask.[Id] = tblTime.TaskId" _
		& " LEFT JOIN tblTimeType" _
		& " ON tblTimeType.[Id] = tblTime.TimeTypeId"_
		& " WHERE tblCustomer.Category = '" & sWorkGroupName & "'" _
		& " And tblTime.StartDate >='" & tmStartDate & "'" _
		& " And tblTime.StartDate < '" & tmStopDate & "'" _
		& " ORDER BY TimeType"
```

utskrivet ser det ut så här:

```
SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType, 
tblTime.[Time] AS Hours, tblTime.[Time]* 60 AS Minutes 
FROM tblcustomer 
INNER JOIN tblTask 
ON tblCustomer.[Nr] = tblTask.CustomerNr 
LEFT JOIN tblTime 
ON tblTask.[Id] = tblTime.TaskId 
LEFT JOIN tblTimeType 
ON tblTimeType.[Id] = tblTime.TimeTypeId 
WHERE tblCustomer.Category = 'Sigtuna' 
And tblTime.StartDate >='2008-03-01 00:00:00.000' 
And tblTime.StartDate < '2008-03-31 23:59:59.999' 
ORDER BY TimeType
```

Om vi säger att de olika tidtyperna heter A, B och C, så listas ju alla i en lång lista nu.

Jag vill att endast ett A visas med den totala tiden för den tidtypen för perioden. Lika för B och C.

Hur gör man detta?

Bilagor:

- [resultat.jpg](https://www.webforum.nu/a/17968.jpg)

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

## #2 — Peter S, 2008-05-05T21:43Z

```
SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType, 
sum(tblTime.[Time]) AS Hours, sum(tblTime.[Time])*60 AS Minutes 
FROM tblcustomer 
INNER JOIN tblTask 
ON tblCustomer.[Nr] = tblTask.CustomerNr 
LEFT JOIN tblTime 
ON tblTask.[Id] = tblTime.TaskId 
LEFT JOIN tblTimeType 
ON tblTimeType.[Id] = tblTime.TimeTypeId 
WHERE tblCustomer.Category = 'Sigtuna' 
And tblTime.StartDate >='2008-03-01 00:00:00.000' 
And tblTime.StartDate < '2008-03-31 23:59:59.999' 
GROUP BY CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END
ORDER BY TimeType
```

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

## #3 — devotion, 2008-05-06T05:14Z

Då var jag det på spåret... :)  

Jag skrev dock:

```
...
GROUP BY TimeType
...
```

och då blev det fel!

Thanx! :)

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

## #4 — devotion, 2008-05-06T20:23Z

Hur gör man för att summera ihop alla A, B och C som ABC och alla D, E och F som DEF

Mvh
Henrik

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

## #5 — LarsG, 2008-05-07T06:56Z

```
sum(case when tidtyp in ('A','B','C') then tblTime.[Time] else 0 end) as abc
```

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

## #6 — devotion, 2008-05-07T09:21Z

> **LarsG skrev:**
>
> ```
> sum(case when tidtyp in ('A','B','C') then tblTime.[Time] else 0 end) as abc
> ```

Thanx!   :)

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

## #7 — devotion, 2008-05-07T17:03Z

Hej igen!

Nu ser frågan ut så här:

```
SELECT CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END AS TimeType, 
SUM(tblTime.[Time]) AS Hours, 
SUM(tblTime.[Time]* 60) AS Minutes, 
sum(case when tblTimeType.[Name] in ('01. Personlig omvårdnad','02. Serviceinsatser','C') then tblTime.[Time] else 0 end) as Sum1 
FROM tblcustomer 
INNER JOIN tblTask ON tblCustomer.[Nr] = tblTask.CustomerNr 
LEFT JOIN tblTime ON tblTask.[Id] = tblTime.TaskId 
LEFT JOIN tblTimeType ON tblTimeType.[Id] = tblTime.TimeTypeId 
WHERE tblCustomer.Category = 'Sigtuna' And tblTime.StartDate >='2008-05-01 00:00:00.000' And tblTime.StartDate < '2008-05-31 23:59:59.999' 
GROUP BY CASE WHEN tblTimeType.[Name] is null THEN '**Saknas**' ELSE tblTimeType.[Name] END 
ORDER BY TimeType
```

Resultatet blir enligt bifogad bild.

Kan man få tilld et så här:

```
01. Personlig omvårdnad          15            0,25
02. Seviceinsatser                   60            1
         Summa                        75            1,25
 
03. Sjukvård                            45            0,75
          Summa                       45            0,75
 
04. Larm                                 60            1
05. Rehab                               15            0,25
06. LASS                               15             0,25
          Summa                       90             1,5
 
          Total summa              210            3,50
```

Mvh
Henrik

Bilagor:

- [sql.PNG](https://www.webforum.nu/a/17989.png)

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

## #8 — devotion, 2008-09-30T17:38Z

Ja, kan man det? :)  

Mvh
Henrik

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

## #9 — Peter S, 2008-09-30T19:02Z

Det skulle jag nog lösa i min applikation. Det verkar alldeles för komplext för en SQL-fråga.

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

## #10 — devotion, 2008-09-30T19:11Z

Oki!

   :)     

Då släpper vi det!

Mvh
Henrik

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/171269-summera-och-gruppera
