我在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
答案 0 :(得分:7)
可以按3分组但必须在另外两个上使用某种类型的聚合函数,如min或max
select col1, col2, col3, max(col4), min(col5)
from tbl
group by col1, col2, col3
答案 1 :(得分:-2)
您可以将groupby用于您想要“不同”的三列。