sql - 比较三列数据并在第四列设置标志
问题描述
我有上面的表格结构,其中第 1、第 3 和第 5 行是相同的。表中可能有很多记录,但我只是将其用作示例。因此,如果 A 列、B 列和 C 列的数据相同,那么我必须将标志列更新为是,否则否。我使用的是 SQL Server 2019。
我尝试使用以下查询更新标志列中唯一的“是”:
update table set Flag='Yes' where (SELECT Column A, Column B, Column C, COUNT(*) FROM Table GROUP BY Column A, Column B, Column C HAVING COUNT(*)>1 )
但出现以下错误:
在预期条件的上下文中指定的非布尔类型的表达式,靠近 ')'。
任何帮助,将不胜感激。
解决方案
如果要更新,可以使用可更新的 CTE:
with toupdate as (
select t.*, count(*) over (partition by a, b, c) as cnt
from t
)
update toupdate
set flag = 'yes'
where cnt > 1;
我建议修复表格,使行不会 100% 重复——但也许您还有问题中未提及的其他列。
推荐阅读
- reactjs - REact 错误对象作为 React 子级无效(找到:[object Promise])。如果您打算渲染一组孩子,请改用数组
- java - cs 61b project1b 无法解析 Deque 中的方法获取
- unit-testing - 测试超时应该取消 EventChannel 并抛出 TimeoutException
- javascript - 使用 HTML 和 CSS 格式化来自 Firebase 的数据
- python - LSTM/GRU TImeSeries 多输出策略预测给出下降值
- python - 模型有效,但图表为空
- firebase - 用于“秘密”网址共享的 Firebase 实时数据库规则
- react-native - Array Map 和 onPress 不会触发
- python - 保存文件输出
- azure - SignalR with Azure - 在发布配置与调试配置(.net core 3.1)上默认由 Azure.SignalR 服务强制执行