Group By包含非聚合字段

时间:2012-10-19 00:12:38

标签: sql-server

我在field2中有一个包含重复值的表,field1包含我想在查询中保留的值。

field1  field2
 Bob       2
 Bob       2
 Bob       3
 Bob       3

此查询使用group by子句:

select field2
rom table
group by field2

众所周知,我不能在选择中包含field1。我需要在输出中包含field1。不知道如何做到这一点。

2 个答案:

答案 0 :(得分:2)

您希望保留field1的内容? MIN值?

  select field2, min(field1) field1
    from table
group by field2

也许MAX值?

  select field2, max(field1) field1, count(field2) total
    from table
group by field2

你必须对它进行聚合,否则就没有意义了。考虑这些数据:

field1   field2
Bob      2
Jim      2
Tim      2

好的,所以你希望field1加上field2。您按field2分组,在输出中为您提供了一行field2。你不能拥有所有3个(Bob,Jim,Tim),这就是为什么你必须对它进行聚合以逻辑上只选择一个值(或几个聚合,例如数字列的平均值)的原因)。

答案 1 :(得分:0)

另一种选择是

select * 
from table T
join
   (select field2
    from table
    group by field2)A
on T.field2=A.field2
相关问题