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

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

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

Заранее большое спасибо.
...
Рейтинг: 0 / 0
13.03.2019, 18:07
    #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
13.03.2019, 18:07
    #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
13.03.2019, 18:11
    #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
13.03.2019, 20:42
    #39785598
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание поля сезонности
plorkie,

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

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

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

Не совсем понял, поясни пожалуйста. Это поле нужно добавить в таблицу с чеками, где единственное поле с датами, это TRANSDATE(дата проводки).
...
Рейтинг: 0 / 0
14.03.2019, 10:03
    #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
14.03.2019, 10:29
    #39785728
iap
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
14.03.2019, 10:30
    #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
14.03.2019, 10:51
    #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
14.03.2019, 10:53
    #39785765
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание поля сезонности
plorkie,

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

В общем все получилось, спасибо большое!)
...
Рейтинг: 0 / 0
15.03.2019, 05:56
    #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
15.03.2019, 06:25
    #39786345
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание поля сезонности
aleks222Завтра глобальное потепление - список сезонов поменялся - переписываем все нахер.Даже не в этом дело. Есть и более реалистичные причины вывести это в таблицу, как-то:

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

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

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

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


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