【发布时间】:2018-12-13 21:23:07
【问题描述】:
如何总结 2 个字段的所有组合返回多少条记录,其中每个字段有 3 个可能的值(Y,N,NULL)?
目标是一个类似下面的表和一个快速重新生成它的查询,以便我们可以验证清理工作。 (即,受限且明确不保密是无效状态,需要调查这些记录)。了解哪些组合返回零记录很重要。示例中未包含所有组合是一种疏忽(并提供了为什么寻求非手动解决方案是一个好主意的演示!)。
我知道如何分别获取结果表的每一行,但不是一次性获取。源数据库是只读的,所以我不能创建视图或新表。我正在使用 Dbeaver 进行分析。
SELECT x.*,x.ROWID FROM table.PROJECT x
WHERE CONFIDENTIAL = 'Y'
然后
SELECT x.*,x.ROWID FROM table.PROJECT x
WHERE CONFIDENTIAL = 'Y' AND RESTRICTED = NULL
...等
所需的结果表(不需要有“描述”,仅显示上下文):
+------------+--------------+-------------+------- -------------------------------------------------------+ |受限 |机密 |记录数 |说明 | +------------+--------------+-------------+------- -------------------------------------------------------+ | {任何} | {任何} |第586章任何状态,即“所有记录” | | | | | | |是 | {任何} | 191 |受限,假定不保密 | |是 | N | 184 |限制,不保密 | |是 |是 | 7 |受限,保密 | |是 |空 | 0 |受限,假定不保密 | | | | | | | N | {任何} | 395 |不受限制,任何机密 | | N | N | 329 |不受限制,不保密 | | N |是 | 7 |不受限制,保密 | | N |空 | 0 |不受限制,假定不保密 | | | | | | | {任何} | N | 513 |假定不受限制,不保密 | | {任何} |是 | 7 |假定不受限制,属于机密| | {任何} |空 | 66 |假定不受限制,假定不保密 | | | | | | |空 | {任何} | 0 |假定不受限制,假定不保密 | +------------+--------------+-------------+------- -------------------------------------------------------+【问题讨论】:
-
对于所需的输出,您还显示了一些零记录组合(例如,
Y与NULL、N与NULL和NULL与{any}),但不是全部(例如NULL和Y、N或NULL)。这种对零行计数的选择性处理是您目标的重要组成部分吗? -
@Hilarion 是的,知道哪些组合返回零记录很重要。示例中没有出现所有组合是一种疏忽(并提供了一个演示,说明为什么寻求非手动解决方案是一个好主意!)。
-
感谢您的澄清。我建议编辑问题,以更正所需的结果,以便所有新贡献者都可以轻松解决整个问题。
-
@Hilarion,所以添加了。
-
观察者注意:我已经离开这个项目几天了,到目前为止无法评估答案。我会尽快回来。