首页 > 解决方案 > 计数相同值的数量

问题描述

我有一个简单的任务,老实说我不知道​​如何完成。我有来自 SQL 查询的这些值:

| DocumentNumber | CustomerID |
------------------------------
|  AAA           |     1      |
|  BBB           |     1      |
|  CCC           |     2      |
|  DDD           |     3      |
-------------------------------

我想显示一个修改过的表格,如下所示:

| DocumentNumber | CustomerID |  Repeate |
-----------------------------------------
|  AAA           |     1      | Multiple |
|  BBB           |     1      | Multiple |
|  CCC           |     2      | Single   |
|  DDD           |     3      | Single   |
------------------------------------------

所以,这个想法很简单 - 我需要附加一个新列并根据客户 ID 是否存在多次设置“多个”和“单个”值

标签: sqlsql-server

解决方案


使用窗口函数:

select t.*,
       (case when count(*) over (partition by CustomerId) = 1 then 'Single'
             else 'Multiple'
        end) as repeate
from t;

推荐阅读