选择查询以从SQL表中获取所需数据

时间:2016-08-24 15:34:54

标签: sql sql-server

我有一些如下所示的数据:

Acc_Id || Row_No
1           1
2           1
2           2
2           3
3           1
3           2
3           3
3           4

我需要一个查询来获得如下所示的结果:

Acc_Id || Row_No
1           1
2           3
3           4

请考虑我是SQL的初学者。

3 个答案:

答案 0 :(得分:2)

我假设你想要行的计数

SELECT Acc_Id, COUNT(*)
FROM Table
GROUP BY Acc_Id

答案 1 :(得分:1)

试试这个:

select Acc_Id, MAX(Row_No)
from table
group by Acc_Id

答案 2 :(得分:0)

作为初学者,这是您第一次接触聚合和分组。您可能希望查看group by上的documentation,因为此问题激发了您对解决方案的兴趣。通过查看具有您指定的公共列值的行进行分组,并将它们折叠为表示该组的单个行。在您的情况下,Acc_Id中的值是您的群组的名称。

其他答案都是正确的,最后两列将与您的数据等效。

select Acc_Id, count(*), max(Row_No)
from T
group by Acc_Id;

如果你的编号有差距,那么它们就不一样了。您必须确定是否实际上在查找列中最大值的行数。此时,您还可以考虑将来对您有用的许多其他聚合函数。 (注意,在这种情况下,这里的实际值几乎没有意义。)

select Acc_Id, min(Row_No), sum(Row_No), avg(Row_No)
from T
group by Acc_Id;