---
title: "\"Slå ihop\" rader"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/168553-slå-ihop-rader"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "devotion"
published: "2008-01-29T15:12:18.000Z"
updated: "2008-02-01T20:33:58.000Z"
replies: 16
views: 1090
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/asp/168553-slå-ihop-rader"
---

# "Slå ihop" rader

## #1 — devotion, 2008-01-29T15:12Z

Hej! :)  

Jag har en tabell med följande: (exempel)

```
cId      Veckodag   field1   field2   field3
10010   Mån          1         500     Test
10010   Tis            1         500     Test
10010    Mån          2        500     Test
10010    Tis            2         500     Test
```

Jag vill på något sätt slå ihop dessa rader till:

```
cId     Veckodag   field1   field2   field3
10010  Mån;Tis         1        500     Test
10010  Mån;Tis        2        500     Test
```

Dvs där field1, field2 och field3 är lika ska det slås ihop...

Hmmm, hoppas någon fattar.... :)  

Mvh
Henrik

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

## #2 — voigtann1, 2008-01-29T15:41Z

red. läste fel.

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

## #3 — Travoni, 2008-01-30T17:27Z

[Group by?](http://www.w3schools.com/sql/sql_groupby.asp)

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

## #4 — devotion, 2008-01-30T22:11Z

> **Travoni skrev:**
>
> [Group by?](http://www.w3schools.com/sql/sql_groupby.asp)

Nja, det måste nog till mer än så... :)  

På något sätt måste man väl loopa ut tabellen och jämföra värden, kan dock inte komma på hur... :(  

Mvh
Henrik

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

## #5 — CatZ, 2008-01-31T09:17Z

om du har ms sql server kan du titta på "case". Annars går det lösa med sub queries tror jag.

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

## #6 — CatZ, 2008-01-31T09:21Z

Kanske något i stil med:

```
select field1, field2, field3 from tabell where ((field1 = field1) AND (field2 = field2))
```

Kan fungera?

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

## #7 — @nders, 2008-01-31T09:22Z

> **CatZ skrev:**
>
> Kanske något i stil med:
>
>
> ```
> select field1, field2, field3 from tabell where ((field1 = field1) AND (field2 = field2))
> ```
>
> 
> 
> Kan fungera?

Det är ju samma sak som:

```
select field1, field2, field3 from tabell
```

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

## #8 — devotion, 2008-01-31T09:45Z

> **@nders skrev:**
>
> Det är ju samma sak som:
>
> ```
> select field1, field2, field3 from tabell
> ```

mmm...

Hur ska man göra då? :)  

Kan man lösa det i SQL verkligen? Jag vill ju få in semikolon mellan Mån;Tis;Ons på den "ihopslagna raden"

Mvh
Henrik

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

## #9 — @nders, 2008-01-31T10:00Z

Du får loopa lite och hålla koll på variablerna som innehåller field1, field2 och field3. Om de är samma som förra gången - konkatenera lite och loopa vidare. Är de inte samma som förra gången - gör utskrift innan du tömmer variablerna och fyller dem igen.

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

## #10 — devotion, 2008-01-31T10:01Z

> **@nders skrev:**
>
> Du får loopa lite och hålla koll på variablerna som innehåller field1, field2 och field3. Om de är samma som förra gången - konkatenera lite och loopa vidare. Är de inte samma som förra gången - gör utskrift innan du tömmer variablerna och fyller dem igen.

Det lät ju enkelt.   :) 

Ska göra ett försök... men lär nog återkomma...

Mvh
Henrik

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

## #11 — LarsG, 2008-01-31T12:18Z

Det går att lösa i SQL i de flesta DBMS. Beroende på vilket DBMS som används behövs olika lösningar. I vissa system finns det en inbyggd aggregatfunktion som gör detta (sybase:list, mysql: group_concat). Om DBMS har stöd för egendefinierade funktioner går det att skriva en sådan som konkatenerar ihop värdena.

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

## #12 — devotion, 2008-01-31T12:30Z

Jag kör ju med MSSQL, skulle det gå där? :)  

Mvh
Henrik

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

## #13 — Travoni, 2008-01-31T12:37Z

Min vän Google:
<http://www.stevenmapes.com/index.php?/archives/23-Recreating-MySQL-GROUP_CONCAT-In-MSSQL-Cross-Tab-Query.html>
<http://sodeve.net/ms-sql-version-of-mysqls-group_concat/>

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

## #14 — Peter S, 2008-01-31T12:59Z

1)
Byt datatyp på Task från text till varchar(max).

2)
En UDF:

```
CREATE FUNCTION RepeatAt 
(
	@contractId int,
	@repeatAmount smallint,
	@startAtMinute smallint,
	@user varchar(64),
	@task varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
	DECLARE @Result varchar(max)

	SELECT
	    @Result = coalesce(@Result + ';', '') + isnull(repeatAt, '')
	FROM
	    tblContractTemplate
	WHERE
	    @contractId = contractId AND
	    @repeatAmount = repeatAmount AND
	    @startAtMinute = startAtMinute AND
	    @user  = [user] AND
	    @task = task
	    ORDER BY CASE
	        WHEN repeatAt LIKE 'M%'  THEN 1
	        WHEN repeatAt LIKE 'Ti%' THEN 2
	        WHEN repeatAt LIKE 'O%'  THEN 3
	        WHEN repeatAt LIKE 'To%' THEN 4
	        WHEN repeatAt LIKE 'F%'  THEN 5
	        WHEN repeatAt LIKE 'L%'  THEN 6
	        WHEN repeatAt LIKE 'S%'  THEN 7
	    END

	RETURN @Result
END
```

3)
Sedan:

```
SELECT
    contractId,
    repeatAmount,
    startAtMinute,
    [user],
    dbo.RepeatAt(contractId,repeatAmount,startAtMinute,[user],task) as repeatAt,
    task
FROM
    tblContractTemplate
GROUP BY
    contractId,
    repeatAmount,
    startAtMinute,
    [user],
    task
```

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

## #15 — devotion, 2008-01-31T13:49Z

Aha! :)  

Det får jag titta lite mer noga på, fattar ingenting just nu... :)  

Mvh
Henrik

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

## #16 — devotion, 2008-01-31T21:02Z

Funkish perfectos... ;)

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

## #17 — emission, 2008-02-01T20:33Z

Red: Hade visst ett gammalt fönster uppe. Bra lösning! Med SQL 2005 kan man även skapa en egen aggregatfunktion för ändamålet, gärna modellerad efter MySQL:s GROUP_CONCAT-funktion.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/168553-slå-ihop-rader
