我有个要求我需要从两个不同的模式中计算相同的表。所需的输出应该是这样的(参见屏幕截图here)
| 图式|表名|计数|
| - -----|- -----|- -----|
| sch1|表1|一千|
| sch2|表1|五百|
| sch1|表2|三千|
| sch2|表2|一千|
这是从模式1和模式2中获取表的计数差。因此,我可以使用LAG()或LEAD函数以上述方式获得输出。请帮帮忙
我试过很多方法。但所有的结果我得到的相关组的使用只有这将不会保持预期的时尚。
我有个要求我需要从两个不同的模式中计算相同的表。所需的输出应该是这样的(参见屏幕截图here)
| 图式|表名|计数|
| - -----|- -----|- -----|
| sch1|表1|一千|
| sch2|表1|五百|
| sch1|表2|三千|
| sch2|表2|一千|
这是从模式1和模式2中获取表的计数差。因此,我可以使用LAG()或LEAD函数以上述方式获得输出。请帮帮忙
我试过很多方法。但所有的结果我得到的相关组的使用只有这将不会保持预期的时尚。
2条答案
按热度按时间n3h0vuf21#
当表列表不能硬编码时(比如需要迭代
information_schema.tables
),必须使用动态SQL。对于每个表,必须生成一个查询,然后在第二步中执行。您可以使用此函数生成并执行给定表的行计数:
然后在以下查询中使用它,以在单个结果集中获取多个模式中存在的同名表的所有行计数:
bttbmeg02#
最直接的方法可能是创建4个子查询
UNION ALL
,每个子查询从4个表中检索计数。