问题描述
SELECT [doc type],[customer number],COUNT([customer number]) As CountCustomerNumber,SUM([SumOpenAmount]) As TotalOpenAmount
FROM
(SELECT d.[customer number] & d.[membership number] AS CustMemb,d.[customer number],agg.[doc type],SUM(agg.[TotalSubOpenAmount]) AS SumOpenAmount
FROM (SELECT [doc type],SUM([open amount]) AS TotalSubOpenAmount
FROM data
WHERE [doc type] = 'RU'
GROUP BY [doc type],[customer number]
) agg
INNER JOIN [data] d
ON d.[customer number] = agg.[customer number]
GROUP BY d.[customer number] & d.[membership number],agg.[doc type]
) AS sub
GROUP BY [doc type],[customer number]
HAVING COUNT([customer number]) = 1
我需要添加:
对未结金额 > 0 的未结金额求和,然后对未结金额
解决方法
尝试条件求和:
SELECT [doc type],[customer number],COUNT([customer number]) As CountCustomerNumber,SUM(IIF([open_amount]>0,[open_amount],0)) AS sum_open_amount_pos,SUM(IIF([open_amount]<0,0)) As sum_open_amount_neg
FROM
(SELECT d.[customer number] & d.[membership number] AS CustMemb,d.[customer number],agg.[doc type],SUM(agg.[TotalSubOpenAmount]) AS SumOpenAmount
FROM (SELECT [doc type],SUM([open amount]) AS TotalSubOpenAmount
FROM data
WHERE [doc type] = 'RU'
GROUP BY [doc type],[customer number]
) agg
INNER JOIN [data] d
ON d.[customer number] = agg.[customer number]
GROUP BY d.[customer number] & d.[membership number],agg.[doc type]
) AS sub
GROUP BY [doc type],[customer number]
HAVING COUNT([customer number]) = 1
您需要先获取未结金额字段。
SELECT [doc type],0)) As sum_open_amount_neg
FROM
(
-- This is the part in which the field open_amount should be fetched.
) AS sub
GROUP BY [doc type],[customer number]
HAVING COUNT([customer number]) = 1