如何在行上返回空白字段?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在行上返回空白字段?相关的知识,希望对你有一定的参考价值。

一些飞机部件必须执行定期维护以保持其可靠性。但是为了使维护计划人员可以看到,组件PN必须位于飞机部件数据库中。基于此,我创建了一个代码,返回其组件列表不完整的飞机。

代码应该如下工作:

1)第一列=有源飞机;

2)第二列=从维护计划环境进行计划维护的组件PN;

3)第三栏=它计算安装在飞机上的Nº组件;

4)第四列=在安装组件时返回的情况(案例1)或未安装的情况(案例0)

SELECT B.AC,
A.PN,
COUNT (DISTINCT (A.AC)) AS "Nº OF CONTROLS",
B.AC_TYPE ||'-'|| B.AC_SERIES AS "TYPE/SERIES",
(CASE WHEN COUNT (DISTINCT (A.AC)) = 1 THEN 1 ELSE 0 END) AS "CHECK"

FROM ODB.PLANNING A
LEFT JOIN ODB.AC_MASTER B
ON A.AC = B.AC

WHERE A.PN IN ('RCF6709')

AND B.AC_TYPE ||'-'|| B.AC_SERIES = 'ATR72-600'

AND B.STATUS = 'ACTIVE'

GROUP BY B.AC,
B.AC_TYPE ||'-'|| B.AC_SERIES,
A.PN

我从维护计划环境中提取了一份excel报告,我们有37架活动飞机,考虑到每架飞机必须安装一个组件pn RCF6709,我的代码无法运行,因为它只返回了33架飞机。据说它只显示安装了组件pn RCF6709的飞机,但它本应显示没有安装组件pn RCF6709的飞机。

请参阅此链接上的图像以更好地了解。

https://drive.google.com/folderview?id=1-1VvWdcKXTW032IEGlX9xBO41FhmRYiV

答案

看来你需要外部连接是另一种方式 - 所以你最初找到所需类型的所有飞机,然后寻找可选​​的计划记录。但是你还需要注意不要通过where子句意外地将它转换回内连接。

我想这可能是你想要的:

SELECT B.AC,
  A.PN,
  COUNT (DISTINCT A.AC) AS "Nº OF CONTROLS",
  B.AC_TYPE ||'-'|| B.AC_SERIES AS "TYPE/SERIES",
  CASE WHEN COUNT (DISTINCT A.AC) = 1 THEN 1 ELSE 0 END AS "CHECK"
FROM ODB.AC_MASTER B
LEFT JOIN ODB.PLANNING A
ON A.AC = B.AC
AND A.PN = 'RCF6709'
WHERE B.AC_TYPE ||'-'|| B.AC_SERIES = 'ATR72-600'
AND B.STATUS = 'ACTIVE'
GROUP BY B.AC,
  B.AC_TYPE ||'-'|| B.AC_SERIES,
  A.PN

但由于我们没有样本数据或预期结果,因此显然未经测试。

我不确定你需要计数中的distinct作为该值(或者至少是b版本,如果有匹配则由于连接条件而相同,如果没有则计数将为零)包含在分组中。

另一答案

请试试

WHERE (A.PN IN ('RCF6709') or A.PN IS NULL )

以上是关于如何在行上返回空白字段?的主要内容,如果未能解决你的问题,请参考以下文章

使用选项卡第二次返回片段显示空白片段

使用viewpager的片段事务返回空白视图

片段布局为空白

这如何返回一个空白值?

getActivity() 在片段上返回 null?

如何在行和返回值中匹配一个变量而不是在r代码中返回另一行的另一个条件