---
title: "Summera"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/177579-summera"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "devotion"
published: "2009-03-22T19:48:24.000Z"
updated: "2009-03-23T15:45:03.000Z"
replies: 3
views: 622
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/177579-summera"
---

# Summera

## #1 — devotion, 2009-03-22T19:48Z

Hej! :)  

Jag har följande fråga;

```
SELECT t.[Id] AS TaskId, t.TaskNr, 
	ti.[Id] AS TimeId, ti.InvoiceTime, ti.[Price] AS TimePrice,  
	m.[Id] As MaterialId, m.InvoiceAmount, m.[Price] AS MaterialPrice
		FROM tblTask t
	INNER JOIN tblTime ti
		ON ti.[OwnerId] = t.[Id] AND ti.[OwnerType] = 2
	INNER JOIN tblMaterial m
		ON m.[OwnerId] = t.[Id] AND m.[OwnerType] = 2
WHERE t.[Id] = 10021
```

Som ger resultat enligt bifogad bild.

Det jag vill åstadkomma är att för varje tidrad beräkna delsumma:

```
ti.[InvoiceTime] * ti.[Price]
```

och för varje materialrad beräkna delsumma:

```
m.[InvoiceAmount] * m.[Price]
```

Detta skall sedan bli två stycken poster där allt summeras enligt

> TotalTimeCost 
> TotalMaterialCost

Jag får det inte rktigt att lira, då alla posterna dupliceras och det blir alldeles för stora tal... (se bild) Hur gör man?

 Mvh
Henrik

Bilagor:

- [result.png](https://www.webforum.nu/a/20050.png)

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

## #2 — devotion, 2009-03-22T21:33Z

Testade lite med:

```
SELECT SUM(DISTINCT ti.InvoiceTime * ti.[Price]) + SUM(DISTINCT m.InvoiceAmount * m.[Price])AS TotalCost
		FROM tblTask t
	INNER JOIN tblTime ti
		ON ti.[OwnerId] = t.[Id] AND ti.[OwnerType] = 2
	INNER JOIN tblMaterial m
		ON m.[OwnerId] = t.[Id] AND m.[OwnerType] = 2
WHERE t.[Id] = 10021
```

Fungerade bara nästan...

Om det fanns flera tider med olika Id, men med samma antal timmar, så räknades inte den posten med... Inte så bra....

Mvh
Henrik

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

## #3 — Peter S, 2009-03-23T10:24Z

```
select dt.taskid
     , dt.tasknr
     , sum(dt.s)
  from
(
    SELECT t.[Id] AS TaskId
         , t.TaskNr
         , sum(ti.invoicetime * ti.price) as s
      FROM tblTask t
    INNER 
      JOIN tblTime ti
        ON ti.[OwnerId] = t.[Id] 
       AND ti.[OwnerType] = 2
     WHERE t.[Id] = 10021
    GROUP
        BY t.Id
         , t.TaskNr
    UNION ALL 
    SELECT t.[Id] AS TaskId
         , t.TaskNr
         , sum(m.invoiceamount * m.price) as s
      FROM tblTask t
    INNER 
      JOIN tblMaterial m
        ON m.[OwnerId] = t.[Id] 
       AND m.[OwnerType] = 2
     WHERE t.[Id] = 10021
    GROUP
        BY t.Id
         , t.TaskNr
) as dt
group
    by dt.taskid
     , dt.tasknr
```

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

## #4 — devotion, 2009-03-23T15:45Z

:)  

Fungerar perfekt!

Mvh
Henrik

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

---

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