【发布时间】:2021-02-22 21:03:57
【问题描述】:
我有一张如下表
id ParentName HandleName CreatedDate
===================================================
139 MI MI-Chart-QL 2018-02-20
139 MI MI-chart-act 2018-02-20
139 MI MI-chart-act 2018-02-20
139 CRA CRA-chart-act 2018-02-20
139 CRA CRA-Chart-act 2018-02-20
我想添加一个包含值的列 - 有意或无意 如果 Act 的 HandleName 与具有 QL 的 id、CreatedDate 和 ParentName 的 HandleName 具有相同的 id、CreatedDate 和 ParentName,那么它是故意的。我正在寻找的决赛桌是
id ParentName HandleName CreatedDate Intentionally/unintentionally
====================================================================================
139 MI MI-Chart-QL 2018-02-20 Intentionally
139 MI MI-chart-act 2018-02-20 Intentionally
139 MI MI-chart-act 2018-02-20 Intentionally
139 CRA CRA-chart-act 2018-02-20 Unintentionally
139 CRA CRA-Chart-act 2018-02-20 Unintentionally
带有“CRA-chart-act”的 HandleName 是无意的,因为 ParentName 与“MI-Chart-QL”不匹配
我使用了下面的代码(如果 Row_Number()>2 我可以故意标记它们)但是我如何检查它们的父名称是否相同以有意或无意地标记它们?
Row_Number() over (Partition by id, CreatedDate ORDER BY createdDate asc)
【问题讨论】:
-
您在此处建议的逻辑意味着
Handle-Name包含一个分隔值,因为act和ql具有附加含义。那是对的吗?如果是这样,他们真的应该有一个单独的列。 -
不幸的是,表没有单独的列包含
ql或act,但逻辑基于包含ql和act的HandleName -
您始终可以在包含额外列的子查询或公用表表达式中创建新数据集,例如this。
标签: sql sql-server count case window-functions