SQL- 为一个特定 ID 对所有数据进行分组
SQL- Grouping all data for one specific ID
我确信有一个简单的解决方案,但我无法解决这个问题。所以我有一个包含几列的 table:
ID、摘要、用户
然而,一个 ID 有多个用户,每个用户都有不同的摘要。所有这一切都很好,但是 ID 不断为每个用户重复。我只想显示一次 ID 和它的所有数据。
示例:
ID | Summary | Users
5 | Hi | me
5 | Hello | you
5 | Stack | him
5 | Over | someone
我想要它做什么:
ID | Summary | Users
5 | Hi | me
| Hello | you
| Stack | him
| Over | someone
所以 ID 5 只会显示为一行,而不是 4 个不同的行。
我正在尝试一些案例陈述,但这无济于事。 group by 子句需要一个聚合函数,它会产生一个总和或一个计数,而不是实际的 ID。我有点迷路或者我错过了什么。任何帮助,将不胜感激。谢谢。
这可能最好在您的表示层中处理,例如类似于 PHP 或 Java。但是,可能有一种方法可以直接从 SQL 服务器:
执行此操作
SELECT
CASE WHEN ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Summary) = 1
THEN CONVERT(varchar(10), ID)
ELSE '' END AS ID_value,
Summary,
Users
FROM yourTable
ORDER BY
ID,
Summary;
为了使这项工作正常进行,需要某种排序方式,我们可以说一组 ID
值中的某个记录是 "first,",因此应该报告ID
值,而其他的则没有。我为此使用 ROW_NUBMER
,并按字母顺序显示第一个汇总值的 ID
值。另一个注意事项,我需要将 ID
转换为 CASE
表达式中的文本,以便我们可以对未显示的 ID
记录使用空字符串。
我确信有一个简单的解决方案,但我无法解决这个问题。所以我有一个包含几列的 table:
ID、摘要、用户
然而,一个 ID 有多个用户,每个用户都有不同的摘要。所有这一切都很好,但是 ID 不断为每个用户重复。我只想显示一次 ID 和它的所有数据。
示例:
ID | Summary | Users
5 | Hi | me
5 | Hello | you
5 | Stack | him
5 | Over | someone
我想要它做什么:
ID | Summary | Users
5 | Hi | me
| Hello | you
| Stack | him
| Over | someone
所以 ID 5 只会显示为一行,而不是 4 个不同的行。 我正在尝试一些案例陈述,但这无济于事。 group by 子句需要一个聚合函数,它会产生一个总和或一个计数,而不是实际的 ID。我有点迷路或者我错过了什么。任何帮助,将不胜感激。谢谢。
这可能最好在您的表示层中处理,例如类似于 PHP 或 Java。但是,可能有一种方法可以直接从 SQL 服务器:
执行此操作SELECT
CASE WHEN ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Summary) = 1
THEN CONVERT(varchar(10), ID)
ELSE '' END AS ID_value,
Summary,
Users
FROM yourTable
ORDER BY
ID,
Summary;
为了使这项工作正常进行,需要某种排序方式,我们可以说一组 ID
值中的某个记录是 "first,",因此应该报告ID
值,而其他的则没有。我为此使用 ROW_NUBMER
,并按字母顺序显示第一个汇总值的 ID
值。另一个注意事项,我需要将 ID
转换为 CASE
表达式中的文本,以便我们可以对未显示的 ID
记录使用空字符串。