powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание поля сезонности
15 сообщений из 15, страница 1 из 1
Создание поля сезонности
    #39785529
plorkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Господа, пожалуйста, помогите, подскажите.
В общем нужно создать поле сезонности со значениями(winter, spring, summer, autumn) с привязкой по дате, т.е допустим в таблице есть поле TRANSDATE к примеру с датой 2016-10-15 00:00:00.000, то значение сезонности при этом будет соответственно 'Autumn'.

Вопрос заключается в том, каким образом это лучше реализовать.
Понятное дело, что это нужно делать через выражение case, но как именно разграничить даты на каждое условие? Можно ли это сделать через функцию datediff, предварительно задав 4 переменные?

Заранее большое спасибо.
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785533
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plorkie,

Код: sql
1.
2.
3.
4.
5.
select case 
			-- ...
			when month('2016-10-15 00:00:00.000') in (10,11,12) then 'Autumn'
			-- ...
		end


?
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785534
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fix
courtplorkie,

Код: sql
1.
2.
3.
4.
5.
select case 
			-- ...
			when month('2016-10-15 00:00:00.000') in (9,10,11) then 'Autumn'
			-- ...
		end



?
:)
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785535
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plorkie,

прям в примерах ms

Код: sql
1.
2.
SELECT  CHOOSE(MONTH(@TRANSDATE),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter')
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785598
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plorkie,

Нужно добавить в таблицу календаря это ваше поле.
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785600
plorkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Спасибо! Никогда не использовал функцию Choose, правильно ли я понимаю, что @TRANSDATE нужно задавать через Declare?
То есть будет
Код: sql
1.
2.
DECLARE @TRANSDATE DATETIME;
SET @TRANSDATE = (select TRANSDATE from tablename);

?
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785602
plorkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик,

Не совсем понял, поясни пожалуйста. Это поле нужно добавить в таблицу с чеками, где единственное поле с датами, это TRANSDATE(дата проводки).
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785705
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plorkie,

Если надо в таблицу, то просто
Код: sql
1.
2.
ALTER TABLE ADD Season AS CHOOSE(MONTH(TRANSDATE),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter')
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785728
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKplorkie,

Если надо в таблицу, то просто
Код: sql
1.
2.
ALTER TABLE ADD Season AS CHOOSE(MONTH(TRANSDATE),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter')

Чем это лучше простого доброго старого стандартного CASE?
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785731
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapTaPaKplorkie,

Если надо в таблицу, то просто
Код: sql
1.
2.
ALTER TABLE ADD Season AS CHOOSE(MONTH(TRANSDATE),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter')

Чем это лучше простого доброго старого стандартного CASE?
ничем, писать меньше, наверное
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785761
plorkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Забыл сказать, есть нюанс, что вся конструкция состоит в процедуре, т. е часть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  SELECT C.CHECK_PK CHECK_ID
            ,C.TRANSACTION_DT TRANSDATE
            ,C.LOCATION_FK
            ,CT.CATEGORY
            ,CT.SUBCATEGORY
            ,CT.PRICE_POSITIONING
            ,0 IS_COUR_DELIVERY
            ,1 IS_RETAIL_FLAG
            ,CT.SUM_QTY
            ,CT.SUM_PRICE
            ,CT.MAX_PRICE
			,CHOOSE(MONTH(TRANSDATE),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter') 		     
			AS SEASON
			INTO table
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39785765
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plorkie,

Вы и пальцы за меня загибать будете?
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39786075
plorkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

В общем все получилось, спасибо большое!)
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39786343
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
plorkieTaPaK,

Забыл сказать, есть нюанс, что вся конструкция состоит в процедуре, т. е часть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  SELECT C.CHECK_PK CHECK_ID
            ,C.TRANSACTION_DT TRANSDATE
            ,C.LOCATION_FK
            ,CT.CATEGORY
            ,CT.SUBCATEGORY
            ,CT.PRICE_POSITIONING
            ,0 IS_COUR_DELIVERY
            ,1 IS_RETAIL_FLAG
            ,CT.SUM_QTY
            ,CT.SUM_PRICE
            ,CT.MAX_PRICE
			,CHOOSE(MONTH(TRANSDATE),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                                                  'Summer','Autumn','Autumn','Autumn','Winter') 		     
			AS SEASON
			INTO table



Халтура. Таких говнокодеров надо душить ишо в колыбельке.
Завтра глобальное потепление - список сезонов поменялся - переписываем все нахер.

Табличка-справочник - вот истинный дао.
...
Рейтинг: 0 / 0
Создание поля сезонности
    #39786345
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Завтра глобальное потепление - список сезонов поменялся - переписываем все нахер.Даже не в этом дело. Есть и более реалистичные причины вывести это в таблицу, как-то:

вывод специфичен для северного полушария;

локализовать литералы на произвольный язык гораздо геморнее, если вообще возможно;

через месяц придет другой менеджер и захочет видеть этот столбец КАПСом - вместо обновления одной таблицы придется лопатить весь код, где такая конструкция встречается.

Первое, что пришло в голову, наверняка есть и еще причины так не делать.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание поля сезонности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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