2016-10-31 119 views
0

我需要根据表中的行数和名为'users'的表中的用户数,将一个表中的相同数量的记录插入另一个表中。例如,如果一个表'refunds_upload'有100条记录,而'用户'表有10个用户,那么我想将所有100行插入到表'refunds'中,并为每个用户ID分配10条记录。从一个表中插入动态数量的记录到另一个表中

目前,我只是在做这个

INSERT Refunds 
    (BorrowerNumber, UserID) 
    SELECT BorrowerNumber, 'unknown' FROM Refunds_Upload 

这是什么需要一个大致轮廓发生

--get the list of users from the Users table 
SELECT UserID FROM Users 

--determine how many refunds each user gets 
Declare @RefundsPerUser int 
SET @RefundsPerUser = ROUND((SELECT COUNT(*) FROM Users)/(SELECT COUNT(*) FROM Refunds_Upload),2) 

--For each UserID in Step 1... 
INSERT INTO Refunds @RefundsPerUser INTO Refunds 
+0

这没有任何意义 - 你为什么计算用户和除以Refunds_Upload中的记录计数?这可以回答,但我担心这不是你真正想要做的/没有足够的措辞来得到你正在寻找的答案.... –

+0

是的,对不起,你是对的。它应该是:SET @RefundsPerUser = ROUND((SELECT COUNT(*)FROM Refunds_Upload)/(SELECT COUNT(*)FROM Users),2) – user3641053

回答

0

我不能说你在做什么是有意义的,但在这里是你将如何做到这一点:

WITH refund_amt(amt) AS 
(
    SELECT ROUND(COUNT(*)/MAX(RU.C),2) AS AMT 
    FROM Users 
    CROSS JOIN (SELECT COUNT(*) AS C FROM Refunds_Upload) RU 
) 
INSERT INTO Refunds (BorrowerNumber, UserID) 
    SELECT UserID, refund_amt.amt 
    FROM Users 
    CROSS JOIN refund_amt 
相关问题