Время прочтения: 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 обработать не смог бы.