【发布时间】:2022-01-17 11:51:06
【问题描述】:
我有一个request 记录表。
这些请求具有各种数据列,例如RequestId、Date、Amount、PersonId 等。
当两条记录的日期相差两天或更短时(例如12/12/2021 和14/12/2021)或5000 或更小的日期相差Amount(例如545000 和542000)并且有完全相同的PersonId - 以及类似的其他一些条件 - 它们将被视为similar 或duplicated 请求。
我想要的是一个提供所有记录的查询和一个名为similar records 的添加列,其中包含所有相似记录的RequestId。
| RequestId | Amount | Date | PersonId | Similar |
|---|---|---|---|---|
| 1 | 100,000 | 10/12/2021 | 63 | 3,5 |
| 2 | 95,000 | 12/12/2021 | 45 | NULL |
| 3 | 43,000 | 12/12/2021 | 63 | 1 |
| 4 | 38,000 | 15/12/2021 | 56 | NULL |
| 5 | 100,000 | 16/12/2021 | 63 | 1 |
| 6 | 63,000 | 25/12/2021 | 45 | NULL |
我是 .NET 框架开发人员,我正在使用 Entity Framework 和 Linq 命令。
请注意,我知道我可以使用循环来做到这一点,但我希望它是一个集成命令来产生这样的输出。谢谢。
【问题讨论】:
-
逻辑上无法完成。假设您有三个金额,5000、10000 和 15000。哪些金额应该被视为“相等”? 100000 都属于一个组,但是 5000 和 15000 不能属于一个组。
-
对于 5000,相似的列将是 10000 的记录 id 为 10000,相似的列将是 5000,10000 的记录的 id 为 15000,相似的列将是 10000 的记录的 id
标签: sql asp.net entity-framework linq