【问题标题】:Get Distinct records based on column B [duplicate]根据B列获取不同的记录[重复]
【发布时间】:2019-08-30 10:56:43
【问题描述】:

我在一个表中有 2 列,其中 A 列有不同的记录,而 b 列没有,即 b 列在每一行中可能有多个相同值的项目。

我需要的是仅显示基于 B 列的不同记录。我确实需要这两列,因为它将是 Crystal Reports 中的输入,但我不在乎 A 列有什么值。

CreatedBy 列有多个不同的值,我需要获取这些不同的值。

查询

SELECT DISTINCT nh.InNeoHistoryId,  nh.CreatedBy
FROM NeoHistory nh
GROUP BY nh.CreatedBy, nh.InNeoHistoryId

结果

【问题讨论】:

  • 那么这个结果有什么问题呢?它们在我看来很不一样。
  • 我需要不同的列 CreatedBy。无论第一列的顶部/第一相关值是什么。经理出现多次,我只需要经理出现一次。
  • 只做一个 GROUP BY nh.CreatedBy。使用 MIN 或 MAX 作为 id。
  • 您无法按原样阅读第一列。您应该对第 1 列使用聚合函数。
  • @jarlh,正是我需要的。您可以发布答案,我会标记它。非常感谢。

标签: sql sql-server


【解决方案1】:

试试下面的查询

SELECT nh.CreatedBy,min(nh.InNeoHistoryId)
FROM NeoHistory nh group by nh.CreatedBy

【讨论】:

  • 是的,这行得通。但我需要第一列的顶部/第一个相关值。如果这是有道理的。 IE。我需要 B 列不同的两列,A 列显示它在 B 列中找到的顶部/第一个相关值。
  • @AleksandarZoric,修改了答案-您现在可以查看
  • 是的 - 就是这样!非常感谢!
【解决方案2】:

只需对您的查询稍作调整:

SELECT MIN(nh.InNeoHistoryId), nh.CreatedBy
FROM NeoHistory nh
GROUP BY nh.CreatedBy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多