2016-09-07 4 views
0

У меня есть таблица «продукта», как:граф строк каждый месяц года - SQL Server

| ProductId | ProductCatId | Price |  Date | Deadline | 
-------------------------------------------------------------------- 
|  1  |  1  | 10.00 | 2016-01-01 | 2016-01-27 | 
|  2  |  2  | 10.00 | 2016-02-01 | 2016-02-27 | 
|  3  |  3  | 10.00 | 2016-03-01 | 2016-03-27 | 
|  4  |  1  | 10.00 | 2016-04-01 | 2016-04-27 | 
|  5  |  3  | 10.00 | 2016-05-01 | 2016-05-27 | 
|  6  |  3  | 10.00 | 2016-06-01 | 2016-06-27 | 
|  7  |  1  | 20.00 | 2016-01-01 | 2016-01-27 | 
|  8  |  2  | 30.00 | 2016-02-01 | 2016-02-27 | 
|  9  |  1  | 40.00 | 2016-03-01 | 2016-03-27 | 
|  10  |  4  | 15.00 | 2016-04-01 | 2016-04-27 | 
|  11  |  1  | 25.00 | 2016-05-01 | 2016-05-27 | 
|  12  |  5  | 55.00 | 2016-06-01 | 2016-06-27 | 
|  13  |  5  | 55.00 | 2016-06-01 | 2016-01-27 | 
|  14  |  5  | 55.00 | 2016-06-01 | 2016-02-27 | 
|  15  |  5  | 55.00 | 2016-06-01 | 2016-03-27 | 

Я хочу создать подсчет SP строки продукта каждый месяц с условием года = CURRENTYEAR, как:

| Month| SumProducts | SumExpiredProducts | 
------------------------------------------- 
| 1 |  3  |   3   | 
| 2 |  3  |   3   | 
| 3 |  3  |   3   | 
| 4 |  2  |   2   | 
| 5 |  2  |   2   | 
| 6 |  2  |   2   | 

Что мне делать?

+2

насчет разных лет? Например. дата 2017-01-01? – jarlh

+1

Где находится SumExpiredProducts? – JohnHC

+0

Это пример, это не значит. – Math9

ответ

1

Вы можете использовать запрос вроде следующего:

SELECT MONTH([Date]), 
     COUNT(*) AS SumProducts , 
     COUNT(CASE WHEN [Date] > Deadline THEN 1 END) AS SumExpiredProducts 
FROM mytable 
WHERE YEAR([Date]) = YEAR(GETDATE()) 
GROUP BY MONTH([Date]) 
+0

Это замечательно! Спасибо, @Giorgos Betsos. – Math9

+0

Я меняю «>» на «<», и моя проблема решена. – Math9