Есть ли способ случайного объединения строк, и эти сегменты будут иметь одинаковые значения? - PullRequest
0 голосов
/ 13 июня 2019

У меня в настоящее время есть корзины с кредитами, помеченные в таблице, dbo.loans.Эта таблица помечает ссуды в поле [loan_tag] и вложенные области в поле [sub_bin].Сейчас я пытаюсь создать подкатегории с произвольно выбранными кредитами, но также имеющими аналогичные балансовые стоимости.У меня нет проблем с выбором / обновлением нового поля с использованием запроса, аналогичного приведенному ниже

У меня нет проблем с выбором / обновлением нового поля с использованием запроса, аналогичного приведенному ниже:

UPDATE DBO.LOANS SET SUB_BIN = "SUB-BUCKET2" WHERE CAPS_HEDGE IN ( SELECT TOP 10000 CAPS_HEDGE FROM DBO.LOANS WHERE SUB_BIN IS NULL AND LOAN_TAG = "PARENT_BUCKET" ORDER BY NEWID() )

Если естьэто 50000 записей, которые я могу запустить 5 раз, меняя имя суб-корзины при каждом запуске.

Теперь мне нужно убедиться, что отдельные сегменты имеют одинаковую общую балансовую стоимость, что является еще одним именем поля в dbo.loans.Просто выполнив это 5 раз, я получу 5 вложенных блоков с одинаковым количеством записей, но разными и случайными значениями book_values.

Кто-нибудь знает, как мне это сделать?Кроме того, есть ли способ выполнить этот прогон N раз и для всех разных имен родительских сегментов?

1 Ответ

0 голосов
/ 13 июня 2019

Если вы хотите назначить случайную корзину с приблизительно равной балансовой стоимостью, то последовательно присвойте номер балансовой стоимости и возьмите каждый n-й:

with toupdate as (
      select l.*, row_number() over (order by book_value) as seqnum
      from loans l
     )
update toupdate
    set sub_bin = seqnum % 5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...