INSERT INTO table
正在为返回的记录集生成一个NULL
值。我正在尝试从用户库表中添加SUM(m.earnings + m.fpearn) from pfinancial
表和用户 ID 和 minpay。
我究竟做错了什么?还有没有更好的方法通过 id's 的临时表来重申?
publsher_monthly
从下面的表格中,我应该用每个用户 ID 一个唯一的 id填充表格,表格中的minpay
数量和列userbase
的总和m.earnings + m.fpearn
pfinancial
publisher_monthly
桌子
pmuseris pmminpay pmearnings
5 20 75
6 30 27
userbase
桌子
userid minpay
5 20
6 30
pfinancial
桌子
userid earnings fpearn
5 10 30
5 20 15
6 15 12
我的查询:
DECLARE @realuserid bigint
CREATE TABLE #tmppmuserids(
idx bigint Primary Key IDENTITY(1,1),
tmppmuserid bigint NULL
)
INSERT INTO #tmppmuserids
SELECT DISTINCT userid FROM pfinancial
DECLARE @i bigint
DECLARE @numrows bigint
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM #tmppmuserids)
IF @numrows > 0
WHILE (@i <= (SELECT MAX(idx) FROM #tmppmuserids))
BEGIN
SET @realuserid = (SELECT tmppmuserid FROM #tmppmuserids WHERE idx = @i)
--PROBLEM HERE
INSERT INTO publisher_monthly (pmearnings, pmuserid, pmminpay)
SELECT
SUM(m.earnings + m.fpearn), MAX(@realuserid), MAX(u.minpay)
FROM pfinancial m
INNER JOIN userbase u on u.userid = m.userid
WHERE
m.userid = @realuserid AND
(m.created >= DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()),0)) AND
(m.created < DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()) + 1, 0))
--END PROBLEM
SET @i = @i + 1
END
SELECT * FROM #tmppmuserids
SELECT * FROM publisher_monthly
DROP TABLE #tmppmuserids