---
title: "Crosstab query"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/48160-crosstab-query"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Mharlin"
published: "2002-07-18T15:18:48.000Z"
updated: "2002-07-30T12:24:52.000Z"
replies: 2
views: 194
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/48160-crosstab-query"
---

# Crosstab query

## #1 — Mharlin, 2002-07-18T15:18Z

Jag behöver göra en crosstab query, alltså få några av värdena att vara som column namn istället.

```
land           typ    funktion       antal

danmark        mp    operating       25
danmark        dp    operating       12
danmark        mp    sales           17
sverige        mp    operating       8
sverige        dp    operaing       10
sverige        mp    sales           19
sverige        dp    sales           15

så ser det ut nu... jag vill att det ska se ut såhär:

land          typ     operating    sales

danmark       mp     25               12
danmark       dp     12                0
sverige       mp     8                 19
sverige       dp      10               15
```

Jag behöver skriva det i SQL...
tacksam för all hjälp och idéer om hur jag kan lösa det...

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

## #2 — agneta_rung, 2002-07-18T16:23Z

Hej Magnus!

Så här kan man göra:

select a.land, a.typ, a.antal as funktion, b.antal as sales
from crosstabTest a, crosstabTest b
where a.land = b.land 
and a.typ = b.typ
and a.funktion = 'operating'
and b.funktion = 'sales'
union
select a.land, a.typ, a.antal as funktion, 0
from crosstabTest a
where a.funktion = 'operating'
and not exists
 (select \* from crosstabTest b
  where a.land = b.land 
  and a.typ = b.typ
  and b.funktion = 'sales')
union
select a.land, a.typ, 0, a.antal as sales
from crosstabTest a
where a.funktion = 'sales'
and not exists
 (select \* from crosstabTest b
  where a.land = b.land 
  and a.typ = b.typ
  and b.funktion = 'operating')

Först tyckte jag man borde kunna göra det snitsigare med en inner join, men jag lyckas inte... Det här funkar i alla fall!

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

## #3 — Mharlin, 2002-07-30T12:24Z

Hjärtligt tack, det funkar perfekt :-)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/48160-crosstab-query
