|
По материалам статьи Arthur Fuller : Exploring
the uses of CASE Вы имеете прекрасную возможность составлять условия выборки
для своих запросов к SQL Server таким образом, что бы получить
очень гибкие варианты представления возвращаемых
данных. SELECT <myColumnSpec> = CASE WHEN <A> THEN <somethingA> WHEN <B> THEN <somethingB> ELSE <somethingE> END Нужно заменить взятые в треугольные скобки параметры из приведенного выше примера, например, как это делается в следующем примере: USE pubs GO SELECT Title, 'Price Range' = CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END FROM titles ORDER BY price GO Это типичный вариант использования CASE, но Вы можете взять от CASE намного больше. Например, посмотрите как функция CASE может быть использована в предложении GROUP BY: SELECT 'Number of Titles', Count(*) FROM titles GROUP BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END GO Вы даже можете дополнить этот запрос сортировкой, добавив предложение ORDER BY: USE pubs GO SELECT CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END AS Range, Title FROM titles GROUP BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END, Title ORDER BY CASE WHEN price IS NULL THEN 'Unpriced' WHEN price < 10 THEN 'Bargain' WHEN price BETWEEN 10 and 20 THEN 'Average' ELSE 'Gift to impress relatives' END, Title GO Обратите внимание, что в последнем примере запроса
необходимо повторять относящийся к CASE блок кода в блоке
SELECT, чтобы его можно было использовать в блоке GROUP
BY. Артур Фаллер разрабатывает приложения базы данных уже в течение более 20 лет. Основными его инструментами являются Access ADP, Microsoft SQL 2000, MySQL и .NET.
Сайт управляется системой uCoz
|