[英]How to verify a DB migration with a query?
使用 Postgres、SQL 开发人员和 dBeaver。
我需要通过扫描一系列列(准确地说是 36 列)来验证数据迁移,以确保从 36 列中提取两个唯一值。
迁移规则是:
这一切都发生在同一个表 (schema.prg) 中。 数据示例如下所示。 后两列是我要正确填充的列。 下面的示例显示了成功的数据库迁移应该是什么样子(我有大约 4,500 行要验证)。
prg_id | 陈1 | 陈2 | 陈3 | ...chan36 | vcn1 | vcn2 |
---|---|---|---|---|---|---|
5100 | 100 | 100 | 262 | 0 | 100 | 262 |
3252 | 43 | 43 | 52 | 52 | 43 | 52 |
4272 | 76 | null | null | null | 76 | 0 |
我试图用 CASE 语句查询,但无法正确查询。 任何帮助表示赞赏。
您可以使用横向连接按顺序获取唯一 ID:
select t.*, c.chans
from t cross join lateral
(select array_agg(chan order by ord) as chans
from (select chan, min(ord) as ord
from (values (1, t.chan1), (2, t.chan2), . . . ) v(ord, chan)
where chan <> 0
group by chan
) c
) c;
我不确定您为什么想要可变数量的列。 该数组应该做你想做的。 您可以使用数组表示法访问数组的元素: chans[1] as vcn1, chans[2] as vcn2, . . .
chans[1] as vcn1, chans[2] as vcn2, . . .
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.