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]
, [customer number]
, 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]
, d.[customer number]
, agg.[doc type]
) AS sub
GROUP BY [doc type]
, [customer number]
HAVING COUNT([customer number]) = 1我需要补充的是:
在期初金额大于0的情况下对期初金额求和,然后在期初金额<0的情况下对期初金额求和。
发布于 2021-06-04 21:28:09
尝试条件求和:
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, [open_amount], 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]
, [customer number]
, 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]
, d.[customer number]
, agg.[doc type]
) AS sub
GROUP BY [doc type]
, [customer number]
HAVING COUNT([customer number]) = 1您需要首先获取未结金额字段。
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, [open_amount], 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]) = 1https://stackoverflow.com/questions/67837628
复制相似问题