---
title: "Select på en select"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/127610-select-på-en-select"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "wazid"
published: "2005-05-03T18:27:13.000Z"
updated: "2005-05-04T08:18:09.000Z"
replies: 1
views: 307
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/127610-select-på-en-select"
---

# Select på en select

## #1 — wazid, 2005-05-03T18:27Z

Hej

Jag undrar om man kan lägga ihop följande två selectsatser till att köra i samma fråga? (Select from select)

Idag kör jag i två steg för att få fram resultatet.
Fråga ett sparar jag som en tabell. Och det är på denna tabellen som jag ställer den andra frågan.

```

SELECT DISTINCT 
                      TOP 100 PERCENT SUM(dbo.OSBSTD.UCSAAM) AS Oms, SUM(dbo.OSBSTD.UCUCOS) AS TVK, dbo.MITMAS.MMITDS, dbo.MITMAS.MMITNO, 
                      dbo.MITBAL.MBEOQT, dbo.MITBAL.MBWHLO, dbo.MITMAS.MMITCL, SUM(dbo.OSBSTD.UCIVQT) AS Antal
FROM         dbo.OSBSTD INNER JOIN
                      dbo.MITMAS ON dbo.OSBSTD.UCITNO = dbo.MITMAS.MMITNO LEFT OUTER JOIN
                      dbo.MITBAL ON dbo.MITMAS.MMITNO = dbo.MITBAL.MBITNO
WHERE     (dbo.OSBSTD.UCIVDT BETWEEN '20040101' AND '20050101')
GROUP BY dbo.MITMAS.MMITCL, dbo.MITMAS.MMITDS, dbo.MITMAS.MMITNO, dbo.MITMAS.MMSTAT, dbo.MITBAL.MBEOQT, dbo.MITBAL.MBWHLO
HAVING      (dbo.MITMAS.MMSTAT < '50') AND (dbo.MITBAL.MBWHLO = '001') AND (dbo.MITMAS.MMITCL <> '999')
ORDER BY dbo.MITMAS.MMITNO, SUM(dbo.OSBSTD.UCSAAM) DESC

SELECT     TOP 100 PERCENT MMITNO, MMITDS, 1 - TVK / Oms AS TG, TVK, Oms, MBEOQT, Antal, Antal / MBEOQT AS omshast, (Antal / MBEOQT) * (1 - TVK / Oms)
                       AS Dupont, MMITCL
FROM         dbo.omsättning_med_tvk_o_orderkvant
WHERE     (MBEOQT <> 0) AND (Oms <> 0)
ORDER BY MMITCL, (Antal / MBEOQT) * (1 - TVK / Oms)
```

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

## #2 — LarsG, 2005-05-04T08:18Z

```
SELECT  MMITNO, 
        MMITDS, 
        1 - TVK / Oms AS TG, 
        TVK, 
        Oms, 
        MBEOQT, 
        Antal, 
        Antal / MBEOQT AS omshast, 
       (Antal / MBEOQT) * (1 - TVK / Oms) AS Dupont, 
       MMITCL
from (
SELECT SUM(dbo.OSBSTD.UCSAAM) AS Oms, 
       SUM(dbo.OSBSTD.UCUCOS) AS TVK, 
       dbo.MITMAS.MMITDS, 
       dbo.MITMAS.MMITNO, 
       dbo.MITBAL.MBEOQT, 
       dbo.MITBAL.MBWHLO, 
       dbo.MITMAS.MMITCL, 
       SUM(dbo.OSBSTD.UCIVQT) AS Antal
FROM   dbo.OSBSTD 
INNER JOIN dbo.MITMAS ON dbo.OSBSTD.UCITNO = dbo.MITMAS.MMITNO 
INNER JOIN dbo.MITBAL ON dbo.MITMAS.MMITNO = dbo.MITBAL.MBITNO
WHERE dbo.OSBSTD.UCIVDT BETWEEN '20040101' AND '20050101'
and dbo.MITMAS.MMSTAT < '50'
and dbo.MITBAL.MBWHLO = '001'
and dbo.MITMAS.MMITCL <> '999'
GROUP BY dbo.MITMAS.MMITCL, 
         dbo.MITMAS.MMITDS, 
         dbo.MITMAS.MMITNO, 
         dbo.MITMAS.MMSTAT, 
         dbo.MITBAL.MBEOQT, 
         dbo.MITBAL.MBWHLO) dt
WHERE MBEOQT <> 0
 AND  Oms <> 0
ORDER BY MMITCL, 
         Dupont
```

Då du har group by så finns det ingen anledning att även ha distinct. 
Din left join blir i praktiken en inner join eftersom du har villkor på tabellen mitbal i where-klausulen.
Det finns ingen anledning att använda having eftersom du inte använder någon aggregatfunktion i villkoret.
Att skriva top 100 percent är meningslöst i största allmänhet.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/127610-select-på-en-select
