Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 20:08   #1
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
Вопрос Простой SELECT запрос (но с использованием CASE)

Цитата:
Написать запрос, который выводит только недоставленные заказы из таблицы Orders. В результатах запроса высвечивать для колонки ShippedDate вместо значений NULL строку ‘Not Shipped’ – необходимо использовать CASЕ выражение. Запрос должен высвечивать только колонки OrderID и ShippedDate.
Фишка в том, что нельзя сделать Not Shipped для формата даты, а именно этого формата ShippedDate. Поэтому никак не знаю, что придумать. Сделал вот так, но так тоже не работает, подскажите?

Код:
SELECT OrderID, 
CASE shippeddate
WHEN IS NULL
THEN NVL(TO_CHAR(ShippedDate,'DD.MM.YYYY'), 'Not shipped')
END;
FROM orders;
видимо не очень понял механику.
а так же сделал работающий запрос, но без case:

Код:
SELECT OrderID, NVL(TO_CHAR(ShippedDate,'DD.MM.YYYY'),'Not shipped')
FROM Orders
WHERE shippeddate IS NULL;
Прошу помочь или посоветовать, как сделать в соответствии с ТЗ.
Form_13 вне форума Ответить с цитированием
Старый 03.05.2013, 21:16   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
CASE WHEN shippeddate IS NULL THEN 'Not shipped' ELSE TO_CHAR(ShippedDate,'DD.MM.YYYY') END
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.05.2013, 17:18   #3
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию

А теперь хочу уточнить. Вот так выглядит теперь код:
Код:
SELECT OrderID,
CASE WHEN shippeddate IS NULL THEN 'Not shipped' ELSE TO_CHAR(ShippedDate,'DD.MM.YYYY') END
FROM orders
WHERE shippeddate IS NULL;
И выводятся две колонки: OrderID и лютая с названием: "CASEWHENshippeddateISNULLTHEN' Not shipped'ELSETO_CHAR(ShippedDate,'DD .MM.YYYY')END"

или добавить в SELECT колонку ShippedDate, но тогда колонки будет три (с этой лютой).

Я конечно, могу сделать AS "ShippedDate" и будет нормально, но это будет ведь другая колонка? Прощу прощение, если докапываюсь, просто хочу разобраться. По ТЗ ведь "для колонки ShippedDate" вывести 'not shipped', а не другой колонкой, или просто у неё после CASE название меняется?
Form_13 вне форума Ответить с цитированием
Старый 04.05.2013, 17:19   #4
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию

То есть вот так сделать:

Код:
SELECT OrderID,
CASE 
WHEN shippeddate IS NULL 
THEN 'Not shipped' 
ELSE TO_CHAR(ShippedDate,'DD.MM.YYYY') 
END AS "ShippedDate"
FROM orders
WHERE shippeddate IS NULL;
Form_13 вне форума Ответить с цитированием
Старый 04.05.2013, 17:40   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

никакие колонки вы никуда не выводите
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Select Case? Simbad Microsoft Office Excel 10 26.11.2011 23:00
select case и or Bape}l{ka Microsoft Office Excel 8 12.08.2011 10:00
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Проблема между функцией и select case Mary-Salta Microsoft Office Access 0 06.07.2009 09:17
Вопрос по Select Case DENGA-RU Microsoft Office Excel 2 23.04.2009 21:03