我需要从查询中检索的表的第二列具有行数,因此第一行将具有1,第二行将具有2,依此类推。我对sql不是很精通,所以如果这是一个简单的任务,我很抱歉。
我正在做的一个基本例子是:
SELECT [Name], [I_NEED_ROW_COUNT_HERE],[Age],[Gender]
FROM [customer]
行计数必须是第二列,并将作为每行的ID。它必须是第二行,因为它生成的文本文件将被发送到状态,并且它们需要特定的格式。
感谢您的帮助。
答案 0 :(得分:11)
通过编辑,我发现您需要一行 ID (通常称为row number而不是" count")最好从一个唯一的ID中收集数据库(person_id或其他一些独特字段)。如果不可行,您可以在select语句中使用ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID DESC) AS ID,
为此报告创建一个。
select Name, ROW_NUMBER() OVER (ORDER BY Name DESC) AS ID,
Age, Gender
from customer
此函数在输出中添加一个名为ID的字段(请参阅底部的提示以描述别名)。由于这不在数据库中,因此需要一种方法来确定它的增量方式。在over关键字之后,它按名称按降序排序。
关于计数的信息如下(按行排名是唯一的):
如果每个客户有多个条目,但该用户的所选字段相同,并且您正在计算该用户的记录(在用户的一个结果记录中求和),那么您应该写:
select Name, count(*), Age, Gender
from customer
group by name, age, gender
这将计算(see MSDN)所有用户记录按名称,年龄和性别分组(如果匹配,则为单条记录)。
但是,如果您计算所有记录,以便整个报告在每一行都有总计,那么您需要:
select Name, (select count(*) from customer) as "count", Age, Gender
from customer
提示:如果您正在使用类似SSMS的内容来编写查询,则拖动列会在列周围放置括号。只有在列名中有空格时才需要这样做,但DBA会像瘟疫一样避免这种情况。此外,如果您需要列标题是特定的,您可以像我的第一个示例中一样使用as关键字。
W3Schools has a good tutorial on count()
COUNT(column_name)
函数返回 的值的数量(不计算NULL值) 指定列:
SELECT COUNT(column_name) FROM table_name;
COUNT(*)
函数返回表中的记录数:
SELECT COUNT(*) FROM table_name;
COUNT(DISTINCT column_name)
函数返回的数量 指定列的不同值:
SELECT COUNT(DISTINCT column_name) FROM table_name;
COUNT(DISTINCT)
适用于ORACLE和Microsoft SQL Server,但是 不使用Microsoft Access。
答案 1 :(得分:1)
在每个人中重复相同的数字很奇怪,但听起来这就是你要求的。并不是说这可能不适合您的SQL风格。 MS Access?
SELECT [Name], (select count(*) from [customer]), [Age], [Gender]
FROM [customer]