Если я правильно понимаю, вы хотите считать неделю на основе суммы, уплаченной ID & Team.Идея состоит в том, чтобы посчитать группу записей по ID, Team, Money_Paid
, а затем самостоятельно объединить по уникальному столбцу.Надеюсь, что это ответ на ваш вопрос.
DECLARE @dataset TABLE (
ID INT,
Team VARCHAR(10),
Week_No INT,
Money_Paid INT
)
INSERT INTO @dataset SELECT 112233, 'AA', 201801, 100
INSERT INTO @dataset SELECT 112233, 'BB', 201801, 0
INSERT INTO @dataset SELECT 112233, 'BB', 201802, 0
INSERT INTO @dataset SELECT 112233, 'BB', 201803, 0
INSERT INTO @dataset SELECT 454545, 'AA', 201801, 100
INSERT INTO @dataset SELECT 658855, 'BB', 201802, 100 --duplicate
INSERT INTO @dataset SELECT 658855, 'BB', 201802, 100 --duplicate
INSERT INTO @dataset SELECT 112233, 'BB', 201809, 0
--week count
SELECT
ds.*,
x.WeekCount
FROM @dataset ds
JOIN (
SELECT
ID,
Team,
COUNT(Week_No) AS WeekCount
FROM @dataset
GROUP BY ID, Team, Money_Paid
) x
ON ds.ID = x.ID
AND ds.Team = x.Team
ORDER BY ID, Team, Week_No
--week to date
SELECT
ds.*,
COUNT(*) OVER (PARTITION BY ID, Team, Money_Paid ORDER BY ID, Team, Week_No) AS WeekToDate
FROM @dataset ds