我正在尝试有一个嵌套查询,我可以在其中选择和显示与所选环境相对应的不同工件的构建 ID。这是架构。
Environment Name Artifact Name Build Id
UAT 2 aecacs.ear 147634-CBOL-9.0.1-APP-Team-Build-243
UAT 2 gbcr.ear 147634-CBOL-9.0.1-APP-Team-Build-244
UAT 2 esms.ear 147634-CBOL-9.0.1-APP-Team-Build-23
UAT 2 framework.ear 147634-CBOL-9.0.1-APP-Team-Build-156
SIT 2 ecr.ear 147634-CBOL-9.0.1-APP-Team-Build-198
SIT 2 aecacs.ear 147634-CBOL-9.0.1-APP-Team-Build-33
SIT 2 gbcr.ear 147634-CBOL-9.0.1-APP-Team-Build-56
SIT 2 ci.ear 147634-CBOL-9.0.1-APP-Team-Build-87
SIT 2 co.ear 147634-CBOL-9.0.1-APP-Team-Build-22
DIT 2 aecacs.ear 147634-CBOL-9.0.1-APP-Team-Build-158
DIT 2 esms.ear
DIT 2 build.ear
我希望所有工件名称都列在第一列中。
在第二列中,“Build Id”对应于环境 UAT2A 和该工件
在第三列 Build Id 对应于该工件和环境 SIT2。
如果不存在对应于环境和工件名称的构建 ID,它应该显示“未找到”
输出:
ARTIFCAT NAME BUILD ID(UAT 2) BUILD ID (SIT 1)
aecacs.ear 147634-CBOL-9.0.1-APP-Team-Build-243 147634-CBOL-9.0.1-APP-Team-Build-33
gbcr.ear 147634-CBOL-9.0.1-APP-Team-Build-244 147634-CBOL-9.0.1-APP-Team-Build-56
esms.ear 147634-CBOL-9.0.1-APP-Team-Build-23 not found
framework.ear
ecr.ear
ci.ear
co.ear
请帮忙。
最佳答案
最简单的方法是使用两个左外部自连接。
找不到build_id时使用Coalesce显示not found。
SELECT DISTINCT a.Name, COALESCE(a1.build_id,'Not Found'), COALESCE(a2.buildId,'Not Found')
FROM Artifact a
LEFT OUTER JOIN Artifact a1 ON a1.Name = a.Name
LEFT OUTER JOIN Artifact a2 ON a2.Name = a.Name
WHERE a1.Environment = 'UAT 2'
AND a2.Environment = 'SIT 2'
关于java - 单表SQL中如何将2列对应的数据显示到第三列和第四列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118882/