Объедините несколько строк в один - PullRequest
0 голосов
/ 28 августа 2018

У меня есть что-то подобное в таблице

COUNTRY SCOPE1   SCOPE2 SCOPE3  SCOPE4  SCOPE5
UK          Y    NULL   NULL    NULL    NULL
UK      NULL          Y NULL    NULL    NULL
UK      NULL     NULL      Y    NULL    NULL

Мне нужен вывод в виде одной строки

COUNTRY SCOPE1  SCOPE2  SCOPE3  SCOPE4  SCOPE5
UK          Y        Y       Y  NULL    NULL

Кто-нибудь может помочь с этим в MS SQL Server 2014?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете использовать агрегатную функцию max или min, обе будут работать для вашего набора данных

SELECT COUNTRY ,
        MAX(SCOPE1) as  SCOPE1,
        MAX(SCOPE2) as  SCOPE2,
        MAX(SCOPE3) as  SCOPE3,
        MAX(SCOPE4) as  SCOPE4,
        MAX(SCOPE5) as  SCOPE5
FROM yourtable
GROUP BY COUNTRY 

http://sqlfiddle.com/#!18/3960c/1

COUNTRY     SCOPE1  SCOPE2  SCOPE3  SCOPE4  SCOPE5
UK           Y        Y       Y     (null)  (null)

или

SELECT COUNTRY ,
        min(SCOPE1) as  SCOPE1,
        min(SCOPE2) as  SCOPE2,
        min(SCOPE3) as  SCOPE3,
        min(SCOPE4) as  SCOPE4,
        min(SCOPE5) as  SCOPE5
FROM yourtable
GROUP BY COUNTRY

http://sqlfiddle.com/#!18/3960c/2

COUNTRY     SCOPE1  SCOPE2  SCOPE3  SCOPE4  SCOPE5
UK            Y      Y         Y    (null)  (null)
0 голосов
/ 28 августа 2018

Вы можете попробовать использовать функцию MAX.

CREATE TABLE T(
    COUNTRY VARCHAR(50),
    SCOPE1 VARCHAR(3),
   SCOPE2 VARCHAR(3),
   SCOPE3 VARCHAR(3),
   SCOPE4 VARCHAR(3),
   SCOPE5 VARCHAR(3)
);


INSERT INTO T VALUES ('UK','Y',NULL,NULL,NULL,NULL);
INSERT INTO T VALUES ('UK',NULL,'Y',NULL,NULL,NULL);
INSERT INTO T VALUES ('UK',NULL,NULL,'Y',NULL,NULL);

Запрос 1 :

SELECT COUNTRY ,
        MAX(SCOPE1) AS SCOPE1,
        MAX(SCOPE2) AS SCOPE2,
        MAX(SCOPE3) AS SCOPE3,
        MAX(SCOPE4) AS SCOPE4,
        MAX(SCOPE5) AS SCOPE5
FROM T
GROUP BY COUNTRY 

Результаты :

| COUNTRY | SCOPE1 | SCOPE2 | SCOPE3 | SCOPE4 | SCOPE5 |
|---------|--------|--------|--------|--------|--------|
|      UK |      Y |      Y |      Y | (null) | (null) |
...