Как я могу немного обновить, если в моей таблице SQL Server есть повторяющиеся значения? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть довольно простая таблица, в которой есть несколько повторяющихся значений в определенной строке, когда в строке есть повторяющиеся значения, я хочу обновить столбец BIT на 1 и 0, если дубликатов нет. Таблица выглядит следующим образом:

id  name    billingId  mergeable
-----------------------------------
1   David   1234        (null)
2   Bill    1234        (null) 
3   Sue     5342        (null)
4   Joe     9864        (null)
5   George  9864        (null)
6   George  9864        (null)
7   Emma    6757        (null)

Я пытался использовать COUNT(*) и найти все повторяющиеся строки, но я пытаюсь обновить столбец BIT.

Кажется, это должно быть легко, но использование лагов не работает для меня. Базовая скрипка для игры: http://sqlfiddle.com/#!18/5445a/2

Я ожидаю, что результаты будут выглядеть следующим образом:

id  name    billingId  mergeable
----------------------------------
1   David   1234        1
2   Bill    1234        1 
3   Sue     5342        0
4   Joe     9864        1
5   George  9864        1
6   George  9864        1
7   Emma    6757        0

1 Ответ

1 голос
/ 29 октября 2019

Кажется, вам нужна оконная функция:

select t.*,
       (case when count(*) over (partition by billingid) > 1
             then 1 else 0
        end) as mergeable
from t;

Если вы хотите это в обновлении:

with toupdate as (
      select t.*,
             (case when count(*) over (partition by billingid) > 1
                   then 1 else 0
              end) as new_mergeable
      from t
     )
    set mergable = new_mergeable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...