Я хочу получать ежедневный, еженедельный и ежемесячный отчет из таблицы sql-сервера.
Структура таблицы выглядит следующим образом:
------------------------------------------
| ItemID | CommentDate |
-----------------------------------------
|989898797 | 2019-04-01 02:51:11.153 |
|----------------------------------------|
|989898797 | 2019-04-01 02:51:11.153 |
|----------------------------------------|
|989898797 | 2019-04-03 02:51:11.153 |
|----------------------------------------|
|989898797 | 2019-04-09 02:51:11.153 |
|----------------------------------------|
|989898797 | 2019-04-11 02:51:11.153 |
|----------------------------------------|
До сих пор я пробовал следующее,
select (select count(itemid) from ebayfeedback where ((year(commentdate) = year(getdate()))
and datepart(m,commentdate)=datepart(m,dateadd(month,-1,getdate())))) as lastmonth,
(select count(itemid) from ebayfeedback where (year(commentdate) = year(getdate()))
and datepart(m,commentdate)=datepart(m,dateadd(month,0,getdate()))) as thismonth,
(select count(itemid) from ebayfeedback where (year(commentdate) = year(getdate()))
and datepart(wk,commentdate)=datepart(wk,dateadd(week,1,getdate()))) as lastweek,
(select count(itemid) from ebayfeedback where (year(commentdate) = year(getdate()))
and datepart(wk,commentdate)=datepart(wk,getdate()) group by datepart(wk,commentdate) ) as thisweek,
(select count(itemid) from ebayfeedback where convert(varchar,commentdate,101)=
convert(varchar,dateadd(day,-1,getdate()),101)) as yesterday,
(select count(itemid) from ebayfeedback where convert(varchar,commentdate,101)=
convert(varchar,getdate(),101) ) as today
from ebayfeedback
Результат, полученный в нескольких строках из вышеприведенного запроса, аналогичен приведенному ниже.
---------------------------------------------------------
| lastmonth | thismonth | lastweek | thisweek | today |
---------------------------------------------------------
|5 | 5 | 2 | 2 | 1 |
|-------------------------------------------------------|
|5 | 5 | 2 | 2 | 1 |
|-------------------------------------------------------|
|5 | 5 | 2 | 2 | 1 |
|-------------------------------------------------------|
|5 | 5 | 2 | 2 | 1 |
|-------------------------------------------------------|
|5 | 5 | 2 | 2 | 1 |
|-------------------------------------------------------|
Мне нужна одна строка (1 результат) только для каждого периода.Пожалуйста, посоветуйте мне, как этого добиться.Также есть ли лучший подход, кроме того, который я использовал.
Желаемый результат должен быть в одну строку, как показано ниже.
| lastmonth | thismonth | lastweek | thisweek | today |
---------------------------------------------------------
|5 | 5 | 2 | 2 | 1 |
|-------------------------------------------------------|
Примечание: данные, которые я привел в качестве примерав вышеупомянутых обеих таблицах не фактическое, которое я имею.