sql - 将多行合并为一行
问题描述
我的桌子上有这样的东西
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 中对此提供帮助吗?
解决方案
您可以尝试使用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) |
推荐阅读
- css - 确保文本不换行
- python - 为什么 Python 打印字符串这么慢?
- netsuite - 网络套件。已保存的搜索,如何加入另一个表
- c++ - 从 c 运行 nvidia-smi
- python-3.x - Python 3.7:我想将整个类作为变量传递,如何使用类型提示来指示变量是一个类?
- flutter - 如何获取列表中不重复的值?(飞镖 - 颤振)
- sql - 计算百分比显示只有 100 perc PostgreSQL
- c# - 从 LinkLabel 超链接将文件的副本保存到特定文件夹
- linux - /dev/ttyACM0 访问在 Lubuntu 启动时被拒绝,但在其他任何时间都可以使用
- javascript - hasOwnProperty 使用 Typescript 总是返回 false