powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / group by week
7 сообщений из 7, страница 1 из 1
group by week
    #36348855
228293
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите пожалйста как сгруппировать понедельно?
не соображу никак
есть запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select 
      datepart(week, tyyr.starttime) as week,
      tyyr.starttime, 
      tyyr.CN, 
      sum(tyyr.id44+tyyr.id55+tyyr.id66) s 
from 
       tyyr
where 
      tyyr.starttime >="2009-11-23" 
and 
      tyyr.starttime <"2009-11-30" 
group by 
      datepart(week, tyyr.starttime),
      tyyr.starttime
      tyyr.CN, 

то есть получаю примерно следующее
week starttimeCNs482009-11-2311045.567.....492009-11-29110215.567
тут понятно почему - у "них" неделя начинается с вс поэтому 29-11-2009 уже начало новой недели
а мне нужно сгрупирровать понедельно Пн- Вс

наверное через условие как то можно сделать типа такого
но не пойму как сделать чтоб каждое значение проверял а затем указывал порядковый номер недели
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
if (select 
           datepart(week, tyyr.starttime)
    from   
           tyyr
    where 
           tyyr.starttime >="2009-11-23" 
    and 
           tyyr.starttime <"2009-11-30" ) <>  1 

    select 
            datepart(week, tyyr.starttime) as week, .....
    .....
else
    select 
           datepart(week, tyyr.starttime)- 1  as week, .....
...
Рейтинг: 0 / 0
group by week
    #36349365
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ASA/SA есть опция уровня базы - first_day_of_week.
В ASE - datefirst.
...
Рейтинг: 0 / 0
group by week
    #36349432
228293
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
спасибо большое, то что нужно
у меня datefirst = 7

нашел в описании
авторЧисла, соответствующие названиям дней недели, зависят от установки пареметра
datefirst. У ряда языков (включая us_english, американский английский)
стандартное соответствие составляет воскресенье=1, понедельник=2 и т.д.
У других языков понедельник=1, вторник=2 и т.д.
Стандартные параметры можно менять в ходе сеанса с помощью
команды set datefirst.
ну и соответсвенно возник второй вопрос
как установить новове значение у меян ругается что не может проапдейтить эту переменную
и вторйо вопрос можно ли эту переменную изменить только внутри одной сессии?
...
Рейтинг: 0 / 0
group by week
    #36349436
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
228293и вторйо вопрос можно ли эту переменную изменить только внутри одной сессии?я же сказал уже: опция уровня базы.

И вообще, читай документацию:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36272.1502/html/commands/X64136.htm
...
Рейтинг: 0 / 0
group by week
    #36349554
228293
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
еще раз спасибо
нашел как устанавливать, неправильный синтаксис был

попровобал в ASE 15
значение datefirst изменяется для всех баз но для одной сессии
...
Рейтинг: 0 / 0
group by week
    #36355508
228293
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как быть с версией ASE 11.х
есть там аналог datefirst?
наскока я понял datefirst появилсоь только в ASE 12.5
...
Рейтинг: 0 / 0
group by week
    #36360239
228293
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообщем вопрос вроде решился, мож кому пригодится
нашел в описаниях для 11.5 про datefirst, ну примерно тоже самое что выше указывал
авторThe numbers that correspond to the names of weekdays depend on the datefirst setting. Some language defaults (including us_english) produce Sunday=1, Monday=2, and so on; others produce Monday=1, Tuesday=2, and so on.The default behavior can be changed on a per-session basis with set datefirst.

я пытался сделать следующее в ASE11
Код: plaintext
1.
2.
if (select @@datefirst) =  7  
SET DATEFIRST  1 
но ругается на select @@datefirst, что нет такой переменной. в ASE 15 это работает.
(хотя теперь понимаю что такое решение некорректно например, если datefirst = 2,
вообщем независимо от результата чему равно datefirst устанавливаем то значение которое нам нужно - вот и все реешние, а то я что то перемудрил

сама команда SET DATEFIRST 1 поддерживается

для примера попробовал дать следующие команды (ASE 11)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select datepart( dw,'2009/12/10')
 5 
select datepart(сdw,'2009/12/10')
 4 
SET DATEFIRST  1 
select datepart( dw,'2009/12/10')
 4 
select datepart(сdw,'2009/12/10')
 4 

всем спасибо за внимание
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / group by week
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]