---
title: "Få ut kolumnnamnet för när viss data inte är null"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/179634-få-ut-kolumnnamnet-för-när-viss-data-inte-är-null"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Minna"
published: "2009-08-03T08:43:40.000Z"
updated: "2009-08-03T09:46:07.000Z"
replies: 3
views: 349
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/179634-få-ut-kolumnnamnet-för-när-viss-data-inte-är-null"
---

# Få ut kolumnnamnet för när viss data inte är null

## #1 — Minna, 2009-08-03T08:43Z

Jag vill via en sql-query få ut columnnamnet när datat för en viss specifik rad inte är "null"

dvs jag har följande tabell:

id, PETER , LARS, ANDERS, MONA, KALLE
1, 1000, null, null, 200, null
2, 200, null, null, null, 300
3, null, 300, null, 400, 100
4, null 1050, null, null, null
5 null, null, 400, null, null
...

När jag väljer att söka efter id=1 så vill jag få ut "PETER" och "LARS". När jag söker på id=2 vill jag få ut "PETER" och "KALLE" osv.

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

## #2 — MickeA.com, 2009-08-03T09:08Z

Jag hade nog haft en egen tabell med alla användare istället och sen ha med "user_id" tillsammans med beloppen.

Blir nog lite lättare, samtidigt som du enkelt kan bygga ut med flera användare vid behov.

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

## #3 — nitro2k01, 2009-08-03T09:39Z

Håller med föregående talare. Men ifall att du bara exemplifierade så kan jag peka hitåt: <http://www.webforum.nu/showthread.php?t=175216>
Om din databasmotor stödjer det (SQL Server 2005 eller Oracle) så kan du använda dig av "unpivot". Annars kan du t ex använda dig av en hög med UNIONs. Så här borde koden bli för ditt problem:

```
(SELECT id AS id, 'PETER' AS columnname, PETER AS value FROM tabellnamn WHERE id = 2 AND PETER IS NOT NULL)
UNION ALL
(SELECT id AS id, 'LARS' AS columnname, LARS AS value FROM tabellnamn WHERE id = 2 AND LARS IS NOT NULL)
UNION ALL
(SELECT id AS id, 'ANDERS' AS columnname, ANDERS AS value FROM tabellnamn WHERE id = 2 AND ANDERS IS NOT NULL)
UNION ALL
(SELECT id AS id, 'MONA' AS columnname, MONA AS value FROM tabellnamn WHERE id = 2 AND MONA IS NOT NULL)
UNION ALL
(SELECT id AS id, 'KALLE' AS columnname, KALLE AS value FROM tabellnamn WHERE id = 2 AND KALLE IS NOT NULL)
```

Det som MickeA föreslår är att du istället ska lagra datat i två tabeller, en för namnen och en för poängen (eller vad det nu är)

```
[b]users[/b]
user_id	name
1	PETER
2	LARS
3	ANDERS
4	MONA
5	KALLE

[b]points[/b]
user_id	points	round_id
1	1000	1	--Peter
4	2000	1	--Mona
1	200	2	--Peter
5	300	2	--Kalle

...osv
```

Sedan kan du plocka ut data med en fråga i stil med:

```
SELECT u.name AS name
  FROM points p
  JOIN users u ON u.user_id = p.user_id
 WHERE p.round_id = 2
```

Självklart kan du även beräkna summa och annat rätt så enkelt.

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

## #4 — Minna, 2009-08-03T09:46Z

Tack, ska kika på det!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/179634-få-ut-kolumnnamnet-för-när-viss-data-inte-är-null
