---
title: "Dual COUNT() i samma SELECT"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/159330-dual-count-i-samma-select"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "freddyk"
published: "2007-04-16T14:03:20.000Z"
updated: "2007-04-17T08:14:33.000Z"
replies: 4
views: 390
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/159330-dual-count-i-samma-select"
---

# Dual COUNT() i samma SELECT

## #1 — freddyk, 2007-04-16T14:03Z

Hallå gubbar o gummor,

Behöver er hjälp. Jag försöker få till 2 counts i en och samma select-sats men resultatet blir skevt. Får samma tal för varje kund...

Jag vill få fram kundnr, antal SLP, antal LP ( i den ordningen).

Vad har jag missat. Har dunkat mitt huvud i väggen några gånger idag på detta. Har ju gjort detta tidigare med annan kod och då har det gått igenom korrekt... men inte nu... hmm..

Kör SQL server 2005

Tacksam för all hjälp...

/RED
Det hela är ett litet lagersystem som ska räkna ihop antal sammansatta lagerplatser samt tot antal lagerplatser kopplade till varje lagrad kund

```
SELECT dbo.kund.kundNr,(SELECT COUNT(DISTINCT dbo.lagerplats.LPExpID)
FROM         dbo.lagerplats	INNER JOIN dbo.lagerplatsBrochure ON dbo.lagerplats.LPExpID = dbo.lagerplatsBrochure.fk_lpID INNER JOIN
                      dbo.brochureLanguage ON dbo.lagerplatsBrochure.fk_brSLank = dbo.brochureLanguage.brLExpID INNER JOIN
                      dbo.brochure ON dbo.brochure.brochID = dbo.brochureLanguage.fk_brochureID INNER JOIN
                      dbo.kund ON dbo.kund.kundNr = dbo.brochure.brochKundNr
WHERE dbo.lagerplats.sammansatt = '1' AND dbo.kund.kundNr = kundNr) AS SLP, (SELECT COUNT(DISTINCT dbo.lagerplats.LPExpID)
FROM         dbo.lagerplats	INNER JOIN dbo.lagerplatsBrochure ON dbo.lagerplats.LPExpID = dbo.lagerplatsBrochure.fk_lpID INNER JOIN
                      dbo.brochureLanguage ON dbo.lagerplatsBrochure.fk_brSLank = dbo.brochureLanguage.brLExpID INNER JOIN
                      dbo.brochure ON dbo.brochure.brochID = dbo.brochureLanguage.fk_brochureID INNER JOIN
                      dbo.kund ON dbo.kund.kundNr = dbo.brochure.brochKundNr
WHERE dbo.kund.kundNr = kundNr) AS LagerPlats
FROM         dbo.lagerplats	INNER JOIN dbo.lagerplatsBrochure ON dbo.lagerplats.LPExpID = dbo.lagerplatsBrochure.fk_lpID INNER JOIN
                      dbo.brochureLanguage ON dbo.lagerplatsBrochure.fk_brSLank = dbo.brochureLanguage.brLExpID INNER JOIN
                      dbo.brochure ON dbo.brochure.brochID = dbo.brochureLanguage.fk_brochureID INNER JOIN
                      dbo.kund ON dbo.kund.kundNr = dbo.brochure.brochKundNr
```

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

## #2 — emission, 2007-04-16T14:36Z

```
SELECT k.kundNr,COUNT(DISTINCT CASE WHEN lp.sammansatt = '1' THEN lp.LPExpID ELSE NULL END) as SLP,COUNT(DISTINCT lp.LPExpID) as LP
FROM   dbo.kund k
LEFT OUTER JOIN dbo.brochure b ON  k.kundNr = b.brochKundNr
LEFT OUTER JOIN dbo.brochureLanguage bl ON b.brochID = bl.fk_brochureID
LEFT OUTER JOIN dbo.lagerplatsBrochure lpb ON bl.brLExpID = lpb.fk_brSLank
LEFT OUTER JOIN dbo.lagerplats lp ON lp.LPExpID = lpb.fk_lpID
```

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

## #3 — freddyk, 2007-04-17T06:29Z

> **emission skrev:**
>
> ```
> SELECT k.kundNr,COUNT(DISTINCT CASE WHEN lp.sammansatt = '1' THEN lp.LPExpID ELSE NULL END) as SLP,COUNT(DISTINCT lp.LPExpID) as LP
> FROM   dbo.kund k
> LEFT OUTER JOIN dbo.brochure b ON  k.kundNr = b.brochKundNr
> LEFT OUTER JOIN dbo.brochureLanguage bl ON b.brochID = bl.fk_brochureID
> LEFT OUTER JOIN dbo.lagerplatsBrochure lpb ON bl.brLExpID = lpb.fk_brSLank
> LEFT OUTER JOIN dbo.lagerplats lp ON lp.LPExpID = lpb.fk_lpID
> ```

Kungligt! Tack så oerhört mkt emission!   :birp  Det fungerade utmärkt! Körde huvudet i väggen så många ggr igår så jag inte ens reflekterade över att alla inte har sammansatta LP.  (y) 

Eller som Homer skulle sagt : Doh!

RED/
Ett litet tillägg...
Kan jag på ngt sätt begränsa urvalet till att endast visa de kundnr som har LP?

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

## #4 — freddyk, 2007-04-17T07:02Z

Löste det. 

Körde 

```
 HAVING (COUNT(DISTINCT lp.LPExpID) > 0)
```

 
på slutet

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

## #5 — emission, 2007-04-17T08:14Z

> **freddyk skrev:**
>
> Kan jag på ngt sätt begränsa urvalet till att endast visa de kundnr som har LP?

Du uppnår det genom att göra om alla LEFT OUTER till INNER

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/159330-dual-count-i-samma-select
