2014-11-15 160 views
1

我正在努力解决这个选择,但没有得到任何地方。 请帮忙。 千恩万谢, 路易丝选择每个月的最后一天


我需要通过定制和月(出生日期)

例如,为了获得销售每个月份组的最后日期的总和定制=“Q”在一个月= 8我在这个月的最后一天3项=“2014年8月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

太棒了,谢谢!现在看起来不错。 –

相关问题