sql - Oracle SQL 列显示未对齐
问题描述
我有下表(C1、C2 和 C3 列),并希望根据 C1、C2、C3 列的未对齐情况生成 C4 列。有没有办法以可扩展的方式获得它(以防我将来需要为 n 列执行此操作)而不需要逐个场景的情况?
C1 | C2 | C3 | C4 |
---|---|---|---|
A1 | A1 | 无效的 | MISMATCH_C3 |
A2 | A2 | A2 | 正确的 |
无效的 | 无效的 | 无效的 | 空值 |
A4 | A1 | A3 | MISMATCH_ALL |
A5 | A1 | 87 | MISMATCH_ALL |
解决方案
你可以使用一个巨大的case
表达。像这样的东西:
(case when c1 <> c2 and c2 <> c3 and c3 <> c1
then 'MISMATCH_ALL'
when c1 is null and c2 is null and c3 is null
then 'NULLS'
when c1 = c2 and c2 = c3
then 'CORRECT'
when c1 = c2
then 'MISMATCH_C3'
when c1 = c3
then 'MISMATCH_C2'
when c2 = c3
then 'MISMATCH_C1'
else 'Other -- probably 2 NULLs'
end)
如果将数据存储在列中,则没有“可扩展”的方式来执行此操作。听起来这些数据应该存储在行而不是列中。如果是这种情况,那么您可以对聚合做一些事情。
数据应存储为:
ENTITY_ID colnum value
1 1 'A1'
1 2 'A1'
1 3 NULL
2 1 'A2'
. . .
然后添加新的“列”将是微不足道的。您可以调整逻辑以返回您想要的信息。
推荐阅读
- python - 如何脚本从 Firefox 的内存缓存中检索文件?
- python - 如何编写一个计算两列不同大小的相同和不同 ID 的函数
- zuora - 祖拉。获得与付款退款相关的付款
- python - 熊猫 groupby 和地图值列表
- python - 使用 os.system 从 python 提示符执行命令
- c++ - 如何根据初始化参数修复类函数行为
- javascript - 开关盒不起作用并给出 0 值
- flutter - Flutter:无法发布但只能运行应用程序
- mysql - 有没有办法根据日期连接四个数据表?
- java - Java 中的嵌套集合(包含 String 键、arrayList 值的哈希图列表)