gpt4 book ai didi

SQL Server 2016 在不重复查询的情况下将相似的行计为一列

转载 作者:行者123 更新时间:2023-12-04 23:43:27 27 4
gpt4 key购买 nike

我有一个返回类似于这个伪表的数据的 SQL 查询:

| Name | Id1 | Id2 | Guid |
|------+-----+-----+------|
| Joe | 1 | 1 | 1123 |
| Joe | 2 | 1 | 1123 |
| Joe | 3 | 1 | 1120 |
| Jeff | 1 | 1 | 1123 |
| Moe | 3 | 42 | 1120 |

我想在输出中显示一个附加列,列出与给定行具有匹配 GUID 的记录总数,如下所示:

| Name | Id1 | Id2 | Guid | # Matching |
+------+-----+-----+------+------------+
| Joe | 1 | 1 | 1123 | 3 |
| Joe | 2 | 1 | 1123 | 3 |
| Joe | 3 | 1 | 1120 | 2 |
| Jeff | 1 | 1 | 1123 | 3 |
| Moe | 3 | 42 | 1120 | 2 |

我能够通过将查询与自身连接起来并进行计数来完成此操作。但是,查询相当大并且需要一段时间才能完成,有没有什么方法可以在不将查询与自身连接的情况下完成此操作?

最佳答案

你想要一个窗口函数:

select t.*, count(*) over (partition by guid) as num_matching
from t;

关于SQL Server 2016 在不重复查询的情况下将相似的行计为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51388454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com