使用分组

时间:2017-10-19 00:57:51

标签: ms-access ms-access-2013

我知道你不能在更新查询中使用聚合 - 但我无法理解如何编写此更新的语法。这是样本数据

UserID   Item            InStock     R2S
14         S0            Yes
28         M23           No
10         Ca2           No
14         G01           No
16         G21           Yes
16         G33           Yes

现在我所追求的是每个UserID,如果InStock对于所有项目都是肯定的,而不是将R2S更新为是

我尝试了以下语法,但是没有考虑具有14和16等倍数的userID,它只是逐行看。

如何将此更改为仅将用户ID 16更新为是,因为两个项目都是r2s?

UPDATE send SET R2S = 'Yes' WHERE (((InStock)='Yes'));

1 个答案:

答案 0 :(得分:1)

这是SQL Server,但应该可以工作或关闭。

update send
set R2S = 'Yes'
from send
join (select UserId
      from send
      group by UserId
      having min(InStock) = 'Yes') Maxes
on send.UserId = Maxes.UserId

子查询消除了任何有'否'的人,然后我们就加入了。

我不喜欢数据点存在于两个地方(事实上没有“否”)。您应该在准备好使用它时完成查询。

下一位读者可能更容易理解的另一种方式:

    update send
    set R2S = 'Yes'
    from send
    where UserId not in (select UserId
          from send
          where InStock = 'No')