Как также получить количество строк / записей из следующего запроса DB2? - PullRequest
0 голосов
/ 02 марта 2020

Необходимо также выбрать общее количество записей, учитывая следующий запрос. Как бы я go об этом?


SELECT DISTINCT t.Creator AS TABLE_SCHEMA, t.Name AS Table_Name, c.Name AS COLUMN_NAME, 
c.COLTYPE AS DATA_TYPE, CASE WHEN c.KEYSEQ = 1 THEN 'Primary Key' ELSE NULL END AS CONSTRAINT_TYPE, NULL AS DATA_PRECISION, NULL AS DATA_SCALE 
    FROM SYSIBM.SYSTABLES t 
        INNER JOIN SYSIBM.SYSCOLUMNS c ON c.TBNAME = t.Name
    WHERE t.Creator='MY_SCHEMA_NAME' AND t.Name='MY_TABLE_NAME'

Любая помощь будет оценена, спасибо

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Для любого SELECT заявления, включая ваше:

SELECT T.*, COUNT(1) OVER() AS ROW_COUNT
FROM
(
SELECT DISTINCT t.Creator AS TABLE_SCHEMA, t.Name AS Table_Name, c.Name AS COLUMN_NAME, 
c.COLTYPE AS DATA_TYPE, CASE WHEN c.KEYSEQ = 1 THEN 'Primary Key' ELSE NULL END AS CONSTRAINT_TYPE, NULL AS DATA_PRECISION, NULL AS DATA_SCALE 
    FROM SYSIBM.SYSTABLES t 
        INNER JOIN SYSIBM.SYSCOLUMNS c ON c.TBNAME = t.Name
    WHERE t.Creator='MY_SCHEMA_NAME' AND t.Name='MY_TABLE_NAME'
) T;
0 голосов
/ 02 марта 2020

Необходимо также выбрать общее количество записей с учетом следующего запроса.

SELECT DISTINCT кажется излишним. Системные таблицы не должны иметь дубликатов. Если вы получаете дубликаты, возможно, это из-за того, что условия JOIN не выполнены - вы должны присоединиться как к имени таблицы, так и к создателю.

Так что просто используйте COUNT(*)

SELECT COUNT(*) 
FROM SYSIBM.SYSTABLES t INNER JOIN
     SYSIBM.SYSCOLUMNS c
     ON c.TBNAME = t.Name AND
        c.TBCREATOR = t.TBCREATOR
WHERE t.Creator = 'MY_SCHEMA_NAME' AND
      t.Name = 'MY_TABLE_NAME';
...