HANA SQL Select 从 table 中找到的多个 table 计数 (*)
HANA SQL Select Count (*) from multiple tables found in a table
DECLARE VI_CNT INTEGER DEFAULT 0;
DECLARE VI_IDX INTEGER;
DECLARE VI_LIMIT INTEGER;
DECLARE VS_OUTPUTSTRG1 NVARCHAR(500);
DECLARE VS_OUTPUTSTRG2 NVARCHAR(500);
/* ANAGRAFICA TABELLE FLUSSI */
ANAGRAFICA = SELECT *
FROM (SELECT DISTINCT
ZCSOURSYS,
ZTABLE,
ROW_NUMBER() OVER (ORDER BY ZCSOURSYS) AS ROW_NB
FROM ZDAFNE_INFO);
/************ FOR ***********/
SELECT COUNT (ZTABLE) INTO VI_LIMIT FROM :ANAGRAFICA;
FOR VI_IDX IN 1..:VI_LIMIT DO
VI_CNT = :VI_IDX;
SELECT ZTABLE INTO VS_OUTPUTSTRG1 FROM :ANAGRAFICA WHERE ROW_NB = VI_IDX;
END FOR;
VS_OUTPUTSTRG2 := 'INSERT INTO "TEAMBW"."IFRS17.INTEGRATION.DATA_QUALITY::ZTB_DQ_DAFNE_TEST" SELECT COUNT(*) FROM '||:VS_OUTPUTSTRG1||'';
EXECUTE IMMEDIATE (:VS_OUTPUTSTRG2);
大家好!提前致谢!
有什么帮助吗?输出没有插入任何东西...也许我做错了什么?
看起来 OP 想要将 table 列表的 原始 记录计数存储到另一个 table.
无需使用 SQLScript 即可满足此要求。
SAP HANA 在 目录 tables 中保留 table 秒内可用的已提交记录数,例如 [M_TABLES][1]
.
有了这些可用信息,INSERT
语句可以重写如下:
INSERT INTO
"TEAMBW"."IFRS17.INTEGRATION.DATA_QUALITY::ZTB_DQ_DAFNE_TEST"
(TABLE_NAME, RECORD_COUNT)
(SELECT
TABLE_NAME, RECORD_COUNT
FROM M_TABLES
WHERE
SCHEMA_NAME ='xyz'
AND TABLE_NAME IN (SELECT DISTINCT TABLE_NAME
FROM ZDAFNE_INFO)
);
只要不需要过滤源 tables 中的待统计记录,此解决方案就有效。
DECLARE VI_CNT INTEGER DEFAULT 0;
DECLARE VI_IDX INTEGER;
DECLARE VI_LIMIT INTEGER;
DECLARE VS_OUTPUTSTRG1 NVARCHAR(500);
DECLARE VS_OUTPUTSTRG2 NVARCHAR(500);
/* ANAGRAFICA TABELLE FLUSSI */
ANAGRAFICA = SELECT *
FROM (SELECT DISTINCT
ZCSOURSYS,
ZTABLE,
ROW_NUMBER() OVER (ORDER BY ZCSOURSYS) AS ROW_NB
FROM ZDAFNE_INFO);
/************ FOR ***********/
SELECT COUNT (ZTABLE) INTO VI_LIMIT FROM :ANAGRAFICA;
FOR VI_IDX IN 1..:VI_LIMIT DO
VI_CNT = :VI_IDX;
SELECT ZTABLE INTO VS_OUTPUTSTRG1 FROM :ANAGRAFICA WHERE ROW_NB = VI_IDX;
END FOR;
VS_OUTPUTSTRG2 := 'INSERT INTO "TEAMBW"."IFRS17.INTEGRATION.DATA_QUALITY::ZTB_DQ_DAFNE_TEST" SELECT COUNT(*) FROM '||:VS_OUTPUTSTRG1||'';
EXECUTE IMMEDIATE (:VS_OUTPUTSTRG2);
大家好!提前致谢! 有什么帮助吗?输出没有插入任何东西...也许我做错了什么?
看起来 OP 想要将 table 列表的 原始 记录计数存储到另一个 table.
无需使用 SQLScript 即可满足此要求。
SAP HANA 在 目录 tables 中保留 table 秒内可用的已提交记录数,例如 [M_TABLES][1]
.
有了这些可用信息,INSERT
语句可以重写如下:
INSERT INTO
"TEAMBW"."IFRS17.INTEGRATION.DATA_QUALITY::ZTB_DQ_DAFNE_TEST"
(TABLE_NAME, RECORD_COUNT)
(SELECT
TABLE_NAME, RECORD_COUNT
FROM M_TABLES
WHERE
SCHEMA_NAME ='xyz'
AND TABLE_NAME IN (SELECT DISTINCT TABLE_NAME
FROM ZDAFNE_INFO)
);
只要不需要过滤源 tables 中的待统计记录,此解决方案就有效。