SQL

Работа с оператором CASE в SQL Server

Время прочтения: 3 мин.

Все мы знаем в Excel функцию ЕСЛИ, но, если данных для проверки очень много, тогда работа в Excel становится затруднительной. Используем оператор CASE в SQL.

Предположим, у нас есть следующие данные по кредитам:

Необходимо проверить правильность определения категории качества по кредитам в соответствии со следующими критериями:

Оператор IF не подходит, так как в нем можно использовать только два значения

IF (условие, значение_1, значение_2)

В нашем случае мы использовали вторую форму оператора CASE, в нем можно задавать несколько разных условий:

CASE
	WHEN условие_1  THEN результат_1
        WHEN условие_1  THEN результат_1
	…………………………………………
        WHEN условие_1  THEN результат_1
        [ELSE альтернативный_результат]
END

Выполняем наш запрос:

SELECT [Номер КД]
             ,[Обслуживание долга]
             ,[Финансовое положение]
             ,[Категория качества - как есть]
             ,CASE
WHEN [Обслуживание долга] = 'Хорошее' and [Финансовое положение] = 'Хорошее'
THEN 'Стандартные (I категория качества)'
WHEN [Обслуживание долга] = 'Хорошее' and [Финансовое положение] = 'Среднее'
THEN 'Нестандартные (II категория качества)'
WHEN [Обслуживание долга] = 'Хорошее' and [Финансовое положение] = 'Плохое'
THEN 'Сомнительные (III категория качества)'
WHEN [Обслуживание долга] = 'Среднее' and [Финансовое положение] = 'Хорошее'
THEN 'Нестандартные (II категория качества)'
WHEN [Обслуживание долга] = 'Среднее' and [Финансовое положение] = 'Среднее'
THEN 'Сомнительные (III категория качества)'
WHEN [Обслуживание долга] = 'Среднее' and [Финансовое положение] = 'Плохое'
THEN 'Проблемные (IV категория качества)'
WHEN [Обслуживание долга] = 'Неудовлетворительное' and [Финансовое положение] = 'Хорошее'
THEN 'Сомнительные (III категория качества)'
WHEN [Обслуживание долга] = 'Неудовлетворительное' and [Финансовое положение] = 'Среднее'
THEN 'Проблемные (IV категория качества)'
WHEN [Обслуживание долга] = 'Неудовлетворительное' and [Финансовое положение] = 'Плохое'
THEN 'Безнадежные (V категория качества)'
END as [Категория качества - как должно быть]
INTO [Table].[KD1]
FROM [Table].[KD]

SELECT [Номер КД]
             ,[Обслуживание долга]
             ,[Финансовое положение]
             ,[Категория качества - как есть]
             ,[Категория качества - как должно быть]
             ,CASE
WHEN [Категория качества - как есть] = [Категория качества - как должно быть]
THEN 'Истина'
ELSE 'Ложь'
END as [Результат проверки]
INTO [Table].[KDitog]
FROM [Table].[KD1]

Получаем результат:

Таким образом, при помощи оператора CASE в SQL Server мы смогли задать множественные условия и обработать массивный объем данных, который Excel обработать не смог бы.

Советуем почитать