返回SQL select union中的记录数

时间:2015-01-08 15:59:32

标签: sql oracle

我正在尝试创建一个select查询,以使其符合某种格式。我需要字符串"记录计数"在第一排。然后我还需要第二列第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行中的记录计数,然后下一列有实际的#。我还在考虑将列标题更改为"记录计数"但我无法弄清楚如何使下一个列标题成为#即使用计数(*)。

2 个答案:

答案 0 :(得分:3)

如果您需要特定顺序的行,则需要使用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;

答案 1 :(得分:0)

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

如何假脱机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;