Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
АЛКС
4 / 2 / 2
Регистрация: 17.02.2016
Сообщений: 339
1

Ошибка CASE в CASE возникла при переносе в столбец с текстом, дату

25.08.2016, 12:30. Просмотров 319. Ответов 2
Метки нет (Все метки)

Подскажите пожалуйста, при формировании второго условия возникла ошибка, как исправить? - как перенести в столбец с текстом, дату с другого столбца?

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT  pp.Name, 
      CASE 
         WHEN CHARINDEX(' Tights', pp.Name)>0 THEN SUBSTRING(pp.Name, 0, CHARINDEX(' Tights', pp.Name))
         WHEN CHARINDEX(',', pp.Name)>0 THEN 
                                            CASE 
                                                WHEN SUBSTRING(pp.Name, 0, CHARINDEX(',', pp.Name)) = 'Long-Sleeve Logo Jersey' THEN  SellStartDate /*дата*/
                                                ELSE SUBSTRING(pp.Name, 0, CHARINDEX(',', pp.Name))
                                            END
         ELSE pp.Name
      END AS тотото, 
      CAST(SellStartDate AS DATE) /* убирание времени */
FROM Production.Product AS pp
WHERE SellStartDate = '20050701'
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2016, 12:30
Ответы с готовыми решениями:

Ошибка при использовании оператора CASE
До элементарности банальное выносит мозг постоянно выводит ошибку: CASE WHEN b IS NULL ...

Ошибка при использовании DISTINCT, ORDER BY и CASE
Есть запрос, он выполняется без ошибок, но есть дублирующие записи SELECT "Field2" FROM "Table1"...

При выборе case 1 всегда черный экран? как правильно указать путь в case
Доброго времени суток) проблема с компиляций когда при компилирование появляется экран выбора....

Ошибки при работе с ComboBox (Case without Select Case)
подскажите пожалуйста в чем ошибка. Я начинающий, поэтому не относитесь строго к моей писанине. По...

Возникла ошибка с базой при переносе сайта с денвера на хостинг
Сначала база загружалась пустой служба поддержки на хостинге исправила! Но теперь такая проблема...

2
vsalien
19 / 19 / 6
Регистрация: 15.06.2014
Сообщений: 40
Завершенные тесты: 1
25.08.2016, 12:49 2
АЛКС, функция CHARINDEX во внутреннем и внешнем CASE может возвращать NULL, если не найдена запятая, а NULL не может быть аргументом для функции SUBSTRING. Поэтому вместо простого CHARINDEX лучше использовать ISNULL(CHARINDEX(',', pp.Name), 0)
1
АЛКС
4 / 2 / 2
Регистрация: 17.02.2016
Сообщений: 339
25.08.2016, 13:50  [ТС] 3
Спасибо, подскажите пожалуйста как мне в столбец с текстом перенести дату из другого столбца (SellStartDate)?

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT  pp.Name, 
      CASE 
        WHEN ISNULL(CHARINDEX(',', pp.Name), 0)>0 THEN 
                                                      CASE 
                                                         WHEN SUBSTRING(pp.Name, 0, ISNULL(CHARINDEX(',', pp.Name), 0)) = 'Sport-100 Helmet' THEN SellStartDate /*дата*/
                                                         ELSE SUBSTRING(pp.Name, 0, ISNULL(CHARINDEX(',', pp.Name), 0))
                                                       END
        ELSE pp.Name
      END AS тотото,
 
      CAST(SellStartDate AS DATE) /* убирвние времени */
FROM Production.Product AS pp
WHERE SellStartDate = '20050701'
Добавлено через 37 минут
Преобразовал, дату в текст и все получилось!!!

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT  pp.Name, 
      CASE 
        WHEN ISNULL(CHARINDEX(',', pp.Name), 0)>0 THEN 
                CASE 
                    WHEN SUBSTRING(pp.Name, 0, ISNULL(CHARINDEX(',', pp.Name), 0)) = 'Sport-100 Helmet' THEN CONVERT(nvarchar(10),SellStartDate,104 )  /*сконвертировал дату в текст*/
                    ELSE SUBSTRING(pp.Name, 0, ISNULL(CHARINDEX(',', pp.Name), 0))
                 END
        ELSE pp.Name
      END AS тотото,
       CAST(SellStartDate AS DATE), /* убирание времени */
      CONVERT(nvarchar(10),getdate(),104 ) /* убирание времени в другом формате*/
FROM Production.Product AS pp
WHERE SellStartDate = '20050701'
0
25.08.2016, 13:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2016, 13:50

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

Оператор case (ошибка): "Control cannot fall through from one case Label ('default:') to another"
Выдает ошибку: "Control cannot fall through from one case label ('default:') to another" class...

Ошибка: "Control cannot fall through from one case label ('case '9' (0x39):') to another"
Всем доброго времени суток. Захотел написать интерпритатор для языка HQ9+: string str...

в case 7 - нужно сделать поиск по номеру группы, а в case 6 сортировку по имени
Помогите пожалуйста: в case 7 - нужно сделать поиск по номеру группы, а в case 6 сортировку по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.