返回SQL表中多列不同的所有列

时间:2013-06-26 12:51:25

标签: sql sql-server select distinct

我在sql表中有5列,我需要所有5列作为输出但在三列上有不同的操作

需要在三列

上返回具有不同操作的所有列

如何实现这个目标?

Timestamp                   Name    State     Context
2013-06-24 11:51:03.2550000 tst1    Started     E1
2013-06-24 11:56:03.2550000 tst1    Completed   E1
2013-06-24 11:51:03.2550000 tst1    Started     E1
2013-06-24 11:56:03.2550000 tst1    Completed   E1
2013-06-24 11:45:03.2550000 tst1    Started     E1
2013-06-24 11:50:03.2550000 tst1    Completed   E1
2013-06-24 11:45:03.2550000 tst1    Started     E1
2013-06-24 11:50:03.2550000 tst1    Completed   E1

这里我通过使用下面的查询在三列上应用distinct来获得上表的所有不同结果。但是我需要这三个列的不同之处还需要选择上下文列而不在Context列上应用distict

  

SELECT DISTINCT Timestamp,Name,State FROM TableName group by   时间戳,名称,国家

改述我的问题:

我需要从上表中选择唯一的列。这里只将unquie列选择视为时间戳,名称,状态

Timestamp                   Name    State     Context
2013-06-24 11:51:03.2550000 tst1    Started     E1
2013-06-24 11:56:03.2550000 tst1    Completed   E1
2013-06-24 11:45:03.2550000 tst1    Started E1
2013-06-24 11:50:03.2550000 tst1    Completed   E1

2 个答案:

答案 0 :(得分:7)

可以按3分组但必须在另外两个上使用某种类型的聚合函数,如min或max

select col1, col2, col3, max(col4), min(col5) 
from tbl 
group by col1, col2, col3

答案 1 :(得分:-2)

您可以将groupby用于您想要“不同”的三列。