【问题标题】:Return all columns with distinct on multiple columns in SQL table返回 SQL 表中多个列上不同的所有列
【发布时间】:2013-06-26 12:51:24
【问题描述】:

我在 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 时间戳、名称、状态

重新表述我的问题:

我需要从上表中选择唯一列。这里只有 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

【问题讨论】:

  • 另外两列呢?您想对它们进行什么样的聚合/修改?请添加您尝试实现的结果的示例
  • 用例子更新了问题
  • 你能显示你想要的输出吗?
  • 该数据中有两个唯一的 Started。 Context 的单个值的示例无法解决问题。
  • 因为在 6 次编辑中您仍然没有明确的问题。您声明 5 列,样本为 4 列。在示例中,第 4 个值只有一个,因此不清楚如何处理。对于该示例,您可以在所有 4 列上选择不同的。你试过我的答案了吗?

标签: sql sql-server select distinct


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以对你想要'distinct'的三列使用groupby。

    【讨论】:

    • 错了,你必须对其他列进行某种聚合!
    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多