формирование запроса

  • Автор темы jcolor
  • Дата начала
Статус
Закрыто для дальнейших ответов.
J

jcolor

Добрый день!

есть таблица в которой такие поля:
дата, №отдела, запись

необходимо из этой таблицы сформировать такую статистику:
сколько уникальных записей (по №отдела) было понедельно и помесячно
 
B

Barmutik

Всё зависит от того какой у Вас сервер БД... но для например MS SQL Server можно сделать так:

Для месяцев:

SELECT DISTINCT MONTH(Data), №отдела FROM YourTable

Для недель:

SELECT DISTINCT DATEPART(week, Data), №отдела FROM YourTable

Я думаю что почти в любом сервере БД есть функции аналогичные использованным в запросе ...
 
J

jcolor

Огромное спасибо!!!!!!!!!!!!
это как раз то, что я и хотела получить
 
J

jcolor

<!--QuoteBegin-Barmutik+15:12:2005, 10:42 -->
<span class="vbquote">(Barmutik @ 15:12:2005, 10:42 )</span><!--QuoteEBegin-->SELECT DISTINCT DATEPART(week, Data), №отдела FROM YourTable
[snapback]28406" rel="nofollow" target="_blank[/snapback]​
[/quote]

использую такой запрос
при этом данные группируются по номеру недели,
а можно как-то получить дату начала и конца недели по номеру?

например, чтобы получить значение не 48, а 28.11.2005-4.12.2005
:)
 
B

Barmutik

Такксс.. задача интерсная .. сходу так решение и не приходит ...
 
B

Barmutik

Задача была интересная .. пришлось поломать голову немного ... Даже стало интересно B)

Так для решения в наших условиях надо установить

SET DATEFIRST что бы MS SQL Server понимал что понедельник у нас первый день недели а не воскресенье как у товарищей за океаном..

Ну и сам запрос:

Код:
SET DATEFIRST 1
SELECT  DISTINCT CONVERT(varchar(10), CASE 
WHEN DATEPART(weekday, ADate) = 1 THEN ADate
WHEN DATEPART(weekday, ADate - 1) = 1 THEN ADate - 1
WHEN DATEPART(weekday, ADate - 2) = 1 THEN ADate - 2
WHEN DATEPART(weekday, ADate - 3) = 1 THEN ADate - 3
WHEN DATEPART(weekday, ADate - 4) = 1 THEN ADate - 4
WHEN DATEPART(weekday, ADate - 5) = 1 THEN ADate - 5
WHEN DATEPART(weekday, ADate - 6) = 1 THEN ADate - 6
END, 104) + ' - ' +
CONVERT(varchar(10), CASE 
WHEN DATEPART(weekday, ADate) = 7 THEN ADate
WHEN DATEPART(weekday, ADate + 1) = 7 THEN ADate + 1
WHEN DATEPART(weekday, ADate + 2) = 7 THEN ADate + 2
WHEN DATEPART(weekday, ADate + 3) = 7 THEN ADate + 3
WHEN DATEPART(weekday, ADate + 4) = 7 THEN ADate + 4
WHEN DATEPART(weekday, ADate + 5) = 7 THEN ADate + 5
WHEN DATEPART(weekday, ADate + 6) = 7 THEN ADate + 6
END, 104), № отдела

FROM  YourTable

Получите то что надо!

За такие запросы надо ставить пиво ;)
 
J

jcolor

B)
просто СУПЕР !!!!!!!!!!
ОГРОМАДНЕЙШЕЕ СПАСИБО!!!!!!!!!!!!

будете в Киеве, заходите на пиво ;)
 
B

Barmutik

Удачи! ;)

Да нет уж .. улчше Вы к нам .. да и лучше высылайте B) Мы тут примем ;)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!