我正在尝试创建一个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行中的记录计数,然后下一列有实际的#。我还在考虑将列标题更改为"记录计数"但我无法弄清楚如何使下一个列标题成为#即使用计数(*)。
答案 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;