首页 > 解决方案 > 将多行合并为一行

问题描述

我的桌子上有这样的东西

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 中对此提供帮助吗?

标签: sqlsql-servertsqlgroup-bysql-server-2014

解决方案


您可以尝试使用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) |

推荐阅读