복붙노트

[SQL] 고유 식별자로 조회 결과의 행을 결합?

SQL

고유 식별자로 조회 결과의 행을 결합?

나는 쿼리가 그 여러 테이블을 통해 검색 및 반환 쿼리 테이블 중 하나의 하나 개의 특정 컬럼의 모든 값에 대해 하나의 행. 테이블은 하나의 고유 식별자에 대한 여러 행을 반환합니다. 내가 뭘 원하는 쉼표로 그 같은 고유 식별자를 가지고 열의 값이 결합 행 분리를 결합하고 고유 컬럼으로 그 값을 반환합니다.

예:

 Museum     MuseumID     Country     City     Paintings     Sculptures

 Louvre     345          France      Paris    Mona Lisa     NULL
 Louvre     345          France      Paris    NULL          Venus De Milo
 Louvre     345          France      Paris    Ship of Fools NULL

대신에 나는 쿼리가이 작업을 수행하고 싶습니다 :

 Museum     MuseumID     Country     City     Art
 Louvre     345          France      Paris    Mona Lisa, Venus De Milo, Ship of Fools

나는 C # 프로그램에서 사용할 수있는 저장 프로 시저에이 쿼리를 설정해야합니다. 처음 엔에 불과하고 사용 C 번호는 배열과 약간의 논리를 사용하여 행을 결합으로 데이터를했다하지만 데이터가 이미 분류와 결합 된 C # 프로그램에 와서 만드는 대신 저장 프로 시저를해야한다. 내가해야 할 내가 원하지 않습니다. 나는 도움이 필요합니다.

이와 캔 사람의 도움?

해결법

  1. ==============================

    1.

    DECLARE @a TABLE
    (
        Museum VARCHAR(32),
        MuseumID INT, 
        Country VARCHAR(32),
        City VARCHAR(32),
        Paintings VARCHAR(32),
        Sculptures VARCHAR(32)
    );
    
    INSERT @a VALUES
    ('Louvre',345,'France','Paris', 'Mona Lisa',     NULL),
    ('Louvre',345,'France','Paris', NULL,            'Venus De Milo'),
    ('Louvre',345,'France','Paris', 'Ship of Fools', NULL);
    
    
    SELECT DISTINCT Museum, MuseumID, Country, City, 
        Art = STUFF((SELECT ', ' + COALESCE(Paintings, Sculptures, '')
        FROM @a AS a2
        WHERE a2.museum = a.museum AND a2.MuseumID = a.MuseumID
        AND a2.Country = a.Country AND a2.City = a.City
        FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'),
        1,2,'')
    FROM @a AS a;
    
  2. ==============================

    2.이에 따라 당신은 유착을 사용해야합니다.

    이에 따라 당신은 유착을 사용해야합니다.

    내가 먼저 다음과 GROUP BY MuseumID에 유착를 사용하여 (첫 번째 질의에서) OneArt라는 하나 개의 컬럼에 그림과 조각 열을 결합한다.

  3. from https://stackoverflow.com/questions/9472986/combining-rows-of-queried-results-by-unique-identifier by cc-by-sa and MIT license