【发布时间】:2016-04-23 14:59:30
【问题描述】:
我有一个表,其中有一个字段A,多个记录可以共享。
我还有另一个字段,Value。
我有第三个字段,GroupLeaderFlag,该标志基于一些先前的关系,共享字段 A 的记录是该组中的核心记录,因此我可以进一步比较它们之间的值和其他字段。
在某些情况下,我无法根据先前的关系为给定组标记 GroupLeaderFlag。
所以我想做一个辅助过程来标记 GroupLeaderFlag 具有以下规则:
- 记录共享字段A ID
- 具有该 fieldA ID 的记录都没有 GroupLeaderFlag,即所有共享 fieldA 的记录都是 NULL
- 符合该标准且具有最低值的组中的记录(在某些情况下,两个或更多可以共享最低值,但这种情况很少见)
更新: 我意识到我有另一个字段 GroupLeaderName,对于每个 fieldA 组,我将我为该组确定/标记为 GroupLeaderFlag 的记录的名称/ID 存储,以便我在组中的每条记录上都方便地使用该名称/ID。
因此,这将成为另一个分组依据的字段,以获取未以 GroupLeader 结尾的 fieldA 组。
我成功运行了 Select,但无法将其转换为 Update:
Select fieldA,Name,Min(Value),'X'
as GroupLeaderFlag from TableA
where GroupLeaderName is NULL
group by fieldA
所以基本上我需要把它变成一个更新,这样我从选择中得到的输出是 fieldA 组中记录的名称,它没有 GroupLeaderFlag 和该组中的最小值以及一个临时字段值 'X' 进行更新。
更新:我发现每个 fieldA 组自然地按值 asc 排序,从而使我无需提取每个 groupin 的最低值。所以我这样做了:
Update TableA as T1
Inner Join
(Select ID,GroupLeaderFlag from TableA
group by fieldA having Count(GroupLeaderFlag )=0) as T2
On T1.ID=T2.ID set T1.GroupLeaderFlag ='X'
【问题讨论】:
-
请编辑您的问题并提供示例数据和所需结果。