返回与UNION相关的两个SELECT的COUNT行

时间:2018-06-26 13:19:27

标签: sql oracle count

我想返回与UNION相关的两个表中具有列的行数。 我写了这个查询

SELECT(
      (SELECT * FROM(
       (SELECT
        ID_COMPTE,
        TITLE,
        LINK,
        DATE_CREAT,
        DATE_MODIF,
        'TF1' AS "TYPE_FICHIER",
        case when DATE_MODIF is null then DATE_CREAT else DATE_MODIF end as LAST_UPDATE FROM FIRST_TABLE FFF where ID_COMPTE= 11111111)

        UNION

        (SELECT
        ID_COMPTE,
        TITLE,
        LINK,
        DATE_CREAT,
        DATE_MODIF,
        'TF2' AS "TYPE_FICHIER",
        case when DATE_MODIF is null then DATE_CREAT else DATE_MODIF end as LAST_UPDATE FROM SECOND_TABLE SSS where ID_COMPTE= 11111111)
        order by LAST_UPDATE desc
        ) parentSelect WHERE ROWNUM BETWEEN 0 AND 2)), count(firstSelect) FROM firstSelect;

目的是返回最后两行以及表1和表2所有行的计数。 没有计数的查询工作正常,只是导致问题的计数,我不知道如何插入。 我还尝试对父SELECT中的每个SELECT和SUM使用count(),但是它不起作用。

2 个答案:

答案 0 :(得分:1)

这个概念应该对您有用。基本上,您可以在with子句中选择所需的数据。然后在主选择中,选择数据和计数。

WITH
base AS
(
    SELECT 'TEST1' DATA FROM DUAL
    UNION ALL 
    SELECT 'TEST2' DATA FROM DUAL
    UNION ALL
    SELECT 'TEST3' DATA FROM DUAL
)
SELECT (SELECT COUNT(*) FROM base) AS KOUNT, base.*
FROM base
;

答案 1 :(得分:0)

您可以使用#Temp(TempTable)。 在其中插入或修改要包含的行,最后从存储过程中将其返回。