-4

我在 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 来获得上表的所有不同结果。但是我需要这三列的不同也需要选择上下文列而不在上下文列上应用 distict

SELECT DISTINCT Timestamp,Name,State FROM TableName group by Timestamp,Name,State

改写我的问题:

我需要从上表中选择唯一列。这里只有 unquie 列选择被认为是 Timestamp,Name,State

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
4

2 回答 2

7

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

select col1, col2, col3, max(col4), min(col5) 
from tbl 
group by col1, col2, col3
于 2013-06-26T12:59:31.737 回答
-2

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

于 2013-06-26T12:53:55.910 回答