Return SQL select 联合中的记录数

Return number of records in SQL select union

我正在尝试创建一个 select 查询以使其符合特定格式。我需要第一行的字符串 "Record Count" 。然后我还需要第二列第 1 行中的行数。然后我需要将它与另一个查询合并

Record Count    125 
2134123 

这是我希望输出显示为 csv 中的样本的样子

Record Count,125
99902064
12312312

我试过下面的代码

SELECT 'Record Count', count(select loginid
from employees)
FROM dual
union
select loginid
from employees

当我这样做时,将单词记录计数放入所有行中。我只想要第 1 行中的记录计数,然后下一列有实际的#。我也在考虑将列 header 更改为 "Record Count" 但我无法弄清楚如何使下一列 header a # 即使用 count(*).

如果您需要按特定顺序排列的行,则需要使用 order by。这是一种方法:

select loginid, cnt
FROM (SELECT 'Record Count' as loginid, (select count(loginid) from employees) as cnt, 1 as ordering
      FROM dual
      union all
      select loginid, NULL, 2
      from employees
     ) t
order by ordering;

union 中的子查询也应具有相同的列,并且应为列命名。而且,我不知道您可以使用子查询作为 count().

的参数

对于这种形式,这是编写查询的更好方法:

select loginid, cnt
FROM (SELECT 'Record Count' as loginid, count(loginid) as cnt, 1 as ordering
      FROM employees
      union all
      select loginid, NULL, 2
      from employees
     ) t
order by ordering;

您可以使用 sqlplus 假脱机实现相同的删除联合。

如何假脱机的示例 How do I spool to a CSV formatted file using SQLPLUS?

SELECT 'Record Count'|| ','|| count(select loginid
 from employees)
 FROM dual;
 select loginid
 from employees;