0

INSERT INTO table正在为返回的记录集生成一个NULL值。我正在尝试从用户库表中添加SUM(m.earnings + m.fpearn) from pfinancial表和用户 ID 和 minpay。

我究竟做错了什么?还有没有更好的方法通过 id's 的临时表来重申?

publsher_monthly从下面的表格中,我应该用每个用户 ID 一个唯一的 id填充表格,表格中的minpay数量和列userbase的总和m.earnings + m.fpearnpfinancial

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
4

1 回答 1

2

在它们周围放置一个IsNull

SELECT SUM(IsNull(m.earnings, 0) + IsNull(m.fpearn, 0))

甚至围绕整个事情:

SELECT IsNull(SUM(m.earnings + m.fpearn), 0)
于 2012-05-10T23:04:09.420 回答