sql - 更改一列以指示在单独的列中有重复项?
问题描述
我有一个表,其中一列 column_A 具有重复值。我还有一个空白的 column_indicator,对于 column_A 中的值多次出现的所有情况,我想用 1 填充它。
我知道如何选择重复项并使用以下公式:
SELECT [dbo].[myTable].[column_A], COUNT(*)
FROM [dbo].[myTable]
GROUP BY [dbo].[myTable].[column_A]
HAVING COUNT(*) > 1
如何更新 column_indicator?我努力了:
UPDATE [dbo].[myTable]
SET [dbo].[myTable].[column_indicator] = 1
WHERE
GROUP BY [dbo].[myTable].[column_A]
HAVING COUNT(*) > 1
我知道我不在基地,但无法弄清楚如何继续此专栏更新。
解决方案
您可以在公用表表达式中进行窗口计数,然后对其进行更新:
WITH cte AS (
SELECT
[column_indicator],
[column_A],
COUNT(*) OVER(PARTITION BY [column_A]) cnt
FROM [dbo].[myTable]
)
UPDATE cte SET [column_indicator] = 1 WHERE cnt > 1
推荐阅读
- laravel - 如何在所有控制器中公开主菜单
- service-worker - self.__WB_MANIFEST 的多个实例
- sql - 使用 RODBC 将访问表导入 R 时保存日期/时间列的时间戳
- jenkins - 访问 jenkins postbuild 操作中的文件时出错
- python - CSV 数据到 Python 字典
- python - 使用 Scrapy 下载所有 JS 文件?
- firebase - 参数类型“用户”不能分配给参数类型“未来”
' - reactjs - 你如何确保 Laravel mix 构建的 React 使用 React 开发工具显示为生产?
- .htaccess - htaccess:如何只允许访问一个文件,否则请求 index.php?
- salesforce - CPQ API 模型的 Saleforce 测试类