2014-11-15 4 views
1

Я пытаюсь выработать этот выбор, но не получаю нигде -. Пожалуйста, помогите. большое спасибо, Луизавыберите последний день каждого месяца


Мне нужно, чтобы получить сумму продаж за последний день каждого месяца группы по обычаю и по месяцам (Fecha)

, например, для пользовательских = «д» в месяц = ​​8 у меня есть 3 пункта в последний день месяца = «2014-08-15» на общую сумму 13 и так далее


DECLARE @sales TABLE 
(custom VARCHAR(10) NOT NULL, 
fecha DATE NOT NULL, 
sales NUMERIC(10, 2) NOT NULL); 

INSERT INTO @sales(custom, fecha, sales) 
VALUES ('q', '20140708', 51), 
('q', '20140712', 3), 
('q', '20140712', 3), 
('q', '20140712', 4), 
('q', '20140811', 3), 
('q', '20140812', 1), 
('q', '20140815', 5), 
('q', '20140815', 6), 
('q', '20140815', 2), 
('q', '20140114', 7), 
('q', '20140714', 24), 
('q', '20140714', 24), 
('x', '20140709', 25), 
('x', '20140710', 16), 
('x', '20140711', 36), 
('x', '20140712', 23), 
('x', '20140712', 35), 
('x', '20140715', 57), 
('c', '20140712', 97), 
('c', '20140715', 71); 

ответ

2

Попробуйте это. Используется CTE для лучшего читаемости кода

;WITH cte 
    AS (SELECT custom, Max(fecha) fecha 
     FROM @sales 
     GROUP BY custom, Datepart(yyyy, fecha), Datepart(mm, fecha)) 
SELECT b.custom, b.fecha, Sum(b.sales) [Sum] 
FROM cte a 
     JOIN @sales b 
     ON a.custom = b.custom 
      AND a.fecha = b.fecha 
GROUP BY b.custom, b.fecha 
+0

насчет двух дат, как 20140715 и 20130715? Ответ в порядке, но вы также должны учитывать год при группировке. –

+0

@EduardUta Вы правильно обновили мой ответ. –

+0

Удивительный, спасибо! Выглядит хорошо. –

Смежные вопросы