2016-06-07 2 views
-1
state month   ID  sales 
------------------------------------- 
FL  05/18/2015  0001 12,000 
FL  05/19/2015  0001 6,000 
FL  05/20/2015  0001 3,000 
FL  05/21/2015  0001 6,000 
FL  06/01/2016  0001 4,000 
TX  06/02/2016  0050 1,000 

В приведенной выше таблице столбца месяца с тем же месяцем, но с другой датой. Мой вопрос заключается в том, как добавить/суммировать столбец продаж с тем же месяцем с разными датами?Как суммировать два значения одного и того же месяца и года на сервере sql

ответ

2

попробовать этот способ

select datepart(year,month) as year ,datepart(month,month) as month, sum(sales) 
from tablename 
group by datepart(year,month) ,datepart(month,month) 
0

Используйте простую агрегацию на колонке месяца. Вы можете использовать функцию DATENAME для извлечения месяца с датой.

SELECT YEAR([month]), DATENAME(MONTH, [month]) AS Month, 
     SUM(sales) 
FROM mytable 
GROUP BY YEAR([month]), DATENAME(MONTH, [month]); 
0

первым увидеть this question о том, как преобразовать столбец месяц (при условии, что это строка/VARCHAR) к дате. Затем введите сумму() группы столбцов продаж на месяц и год.

0

Вы хотите сказать, что хотите получить итоговые суммы за январь .. Декабрь, независимо от года?

Если да, то вы могли бы сделать простую agrregate и группу по DATEPART (месяц, theDate)

ЭГ

SELECT STATE, DATEPART(month, [month]), SUM(sales) 
FROM yourTable 
GROUP BY 
    STATE, DATEPART(month, [month]) 
0

Используя приведенный ниже запрос вы можете получить результат как месяц, год мудрым:

SELECT MONTH([Month]) [Month], YEAR([Month]) [Year], SUM(Sales) TotalSales 
FROM TestTable 
GROUP BY MONTH([Month]), YEAR([Month]) 
ORDER BY MONTH([Month]), YEAR([Month]) 

Фактическое выполнение с заданными данными выборки:

DECLARE @TestTable TABLE ([State] VARCHAR (20), [Month] DATE, ID VARCHAR(5), Sales INT); 

INSERT INTO @TestTable ([State], [Month], ID, Sales) 
VALUES 
('FL', '05/18/2015', '0001', 12000), 
('FL', '05/19/2015', '0001', 6000), 
('FL', '05/20/2015', '0001', 3000), 
('FL', '05/21/2015', '0001', 6000), 
('FL', '06/01/2016', '0001', 4000), 
('TX', '06/02/2016', '0050', 1000), 
('TX', '05/02/2016', '0050', 1000) 

SELECT MONTH([Month]) [Month], YEAR([Month]) [Year], SUM(Sales) TotalSales 
FROM @TestTable 
GROUP BY MONTH([Month]), YEAR([Month]) 
ORDER BY MONTH([Month]), YEAR([Month]) 

Результат:

Month Year TotalSales 
5  2015  27000 
5  2016  1000 
6  2016  5000 
0

Ниже запроса может помочь вам: -

declare @test111 table 
(name varchar(20) NOT NULL, 
month date NOT NULL, 
col1 int NOT NULL, 
sales int NOT NULL) 

Insert into @test111 
values('FL','05/18/2015',0001,12000), 
('FL','05/19/2015',0001,6000), 
('FL','05/20/2015',0001,3000), 
('FL','05/21/2015',0001,6000), 
('FL','06/01/2016',0001,4000), 
('TX','06/02/2016',0050,1000) 


select month,sum(sales) over (partition by datepart(mm,month)) Sales 
from @test111 

Выход:

month  Sales 
2015-05-18 27000 
2015-05-19 27000 
2015-05-20 27000 
2015-05-21 27000 
2016-06-01 5000 
2016-06-02 5000 
Смежные вопросы