基于 1 列限制结果

limit results based upon 1 column

我是 SQL 新手,非常感谢任何帮助! id 是程序中人员的 ID,STI 是与他们当前正在进行或已完成的步骤 ID 相关的步骤 ID。我很难弄清楚的是如何将结果限制为仅显示唯一的人员 ID。我根本无法让 DISTINCT 工作。 这是查询:

SELECT
    s.[PersonAliasId] AS [id]
  , s.[StepTypeId] AS [sti]
FROM
    [Step] s
ORDER BY s.[PersonAliasId]

以上查询的结果为:

id      sti
11126   19
47331   19
66693   7
68110   19
74838   7
89867   1
89867   2
110105  19
122059  19
122059  21
130273  7
139876  19
150180  19
161929  7
165926  19
169329  19
171922  19

我们正在为每个人跟踪多个步骤。当他们完成一个步骤然后转到另一个步骤时,他们会在此查询中显示两次。例如,人 122059 已经完成了步骤 id 19,目前正在进行步骤 id 21。我真的不关心显示的多个步骤数字,我真的只需要人 ID 到 return 一次。谁能帮我弄清楚我做错了什么?

根据我对你问题的理解。您只关心唯一 ID。所以你可以尝试使用 MAX() 函数来获取每个 id 的最大步长。

select 
distinct(s.PersonAliasId) AS id,
max(s.StepTypeId) AS sti
FROM Step s
GROUP BY s.PersonAliasId
ORDER BY s.PersonAliasId

db fiddle link

如果我有任何误解,请告诉我