Как повторить запись n раз - SQL Сервер - PullRequest
0 голосов
/ 17 июня 2020

Я запрашиваю веб-данные, которые возвращают список элементов и их количество. Мне нужно перевести это в несколько записей - по одной на каждый принадлежащий предмет. Например, я мог бы увидеть такой результат: {"part_id": 118, "amount": 3}. Но в моей базе данных мне нужно иметь возможность взаимодействовать с каждым элементом индивидуально, назначать им местоположения, свойства и т. Д. c.

Это будет выглядеть так:

Part_ID     CopyNum
-------------------
118         1
118         2
118         3

Раньше у меня была таблица, которую я назвал [Count], это был просто список целых чисел от 1 до 100, и я сделал перекрестное соединение с условием, что Count.Num <= Qty

Я бы хотел сделать это без таблицы Count, что похоже на взлом. Как это сделать на лету?

1 Ответ

1 голос
/ 17 июня 2020

Если у вас нет таблицы подсчетов / чисел (настоятельно рекомендуется), вы можете использовать специальную c таблицу подсчета вместе с CROSS APPLY

Пример

Declare @YourTable Table ([Part_ID] int,[Quantity] int)  Insert Into @YourTable Values 
 (118,3)
,(125,2)

Select A.Part_ID
      ,CopyNum = B.N 
 From @YourTable A
 Cross Apply ( Select Top (Quantity) N=Row_Number() Over (Order By (Select NULL)) 
               From  master..spt_values n1, master..spt_values n2
            ) B

Возврат

Part_ID CopyNum
118     1
118     2
118     3
125     1
125     2
...