sql - 如何从行获取 SQL 结果视图到单独的列
问题描述
我有一个返回结果的复杂选择查询:
1_id 2_id 3_id 4_id CultureId
value1 value2 value3 a 1
value1 value2 value3 b 2
我需要以如下格式获得结果:
1_id 2_id 3_id 4_id_1 4_id_2
value1 value2 value3 a b
我能够想出那个,但也许有更好的方法来实现它?
SELECT 1_id, 2_id, 3_id, (SELECT 4_id from table where 1_id = value1 and CultureId = 1) as 4_id_1,
(SELECT 4_id from table where 1_id = value1 and CultureId = 2) as 4_id_2
from table where 1_id = value1
问题是我在解决方案中使用了三次的实际内部 SELECT 查询(“SELECT 1_id, 2_id, 3_id, 4_id CultureId from table where 1_id = value1”)是一个复杂的查询,并且包含的连接很少,使得该解决方案变得巨大。
有没有办法简化它?
解决方案
您可以聚合并使用min()
and max()
:
select id_1, id_2, id_3,
min(cultureId) as cultureid_1,
nullif(max(cultureId), min(cultureId)) as cultureid_2
from t
group by id_1, id_2, id_3;
推荐阅读
- angular - 关闭终端后如何保持角度通用服务器运行
- react-native - 如何获取用户图库图片的地址?
- python - DIY HPC 集群以运行 Jupyter/Python 笔记本
- javascript - Bootstrap 3:移动视图多选“选择了0个元素”
- java - ANTLR 2 令牌流多路复用:为什么我的令牌出现故障?
- azure-devops - 在 Azure Devops 中运行顺序构建管道作为拉取请求分支策略的一部分
- java - 微调器值未显示正确值(改造)
- python - 在期权计算中正确指定无风险利率
- linux - 如何在 openhpi 安装期间解决 openssl 问题?
- python - 如何解决 Pycharm 中的 Visual Studio 问题