Select if sql: sql server — How do I perform an IF…THEN in an SQL SELECT?
mysql — ‘IF’ в операторе ‘SELECT’ — выберите выходное значение на основе значений столбца
спросил
Изменено
2 месяца назад
Просмотрено
1,6 млн раз
ВЫБРАТЬ id, сумма ИЗ отчета
Мне нужно сумма
будет сумма
, если report.type='P'
и -сумма
, если report.type='N'
. Как мне добавить это к вышеуказанному запросу?
- mysql
- sql
- база данных
0
ВЫБЕРИТЕ идентификатор, ЕСЛИ (тип = 'P', количество, количество * -1) как количество ОТ отчета
См. https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html.
Кроме того, вы можете обрабатывать, когда условие равно null. В случае нулевой суммы:
ВЫБЕРИТЕ идентификатор, ЕСЛИ (тип = 'P', IFNULL (сумма, 0), IFNULL (сумма, 0) * -1) как сумма ОТ отчета
Часть IFNULL(amount,0)
означает , когда сумма не равна нулю, возвращаемая сумма иначе возвращается 0 .
6
Используйте оператор case
:
select id, отчет о случае.тип когда 'P' тогда сумма когда 'N' тогда -сумма конец как сумма от `отчет`
3
ВЫБЕРИТЕ Название компании, СЛУЧАЙ, КОГДА Страна В («США», «Канада»), ТОГДА «Северная Америка» КОГДА Страна = "Бразилия", ТОГДА "Южная Америка" ИНАЧЕ 'Европа' ЗАКАНЧИВАЕТСЯ КАК КОНТИНЕНТ ОТ поставщиков ЗАКАЗАТЬ ПО CompanyName;
1
выбрать идентификатор, случай когда тип_отчета = 'P' затем сумма когда тип_отчета = 'N' затем -сумма иначе ноль конец со стола
0
Самый простой способ — использовать IF(). Да, Mysql позволяет выполнять условную логику. ЕСЛИ функция принимает 3 параметра УСЛОВИЕ, ИСТИННЫЙ РЕЗУЛЬТАТ, ЛОЖНЫЙ РЕЗУЛЬТАТ.
Итак, логика
, если report.type = 'p' сумма = сумма еще сумма = -1*сумма
SQL
ВЫБРАТЬ id, IF(report.type = 'P', абс(сумма), -1*абс(сумма)) как сумма ОТ отчета
Вы можете пропустить abs(), если все no +ve только
0
ВЫБРАТЬ id, сумма ОТ отчета ГДЕ тип = 'P' СОЮЗ ВЫБЕРИТЕ идентификатор, (сумма * -1) КАК сумма ОТ отчета ГДЕ тип = 'N' ЗАКАЗАТЬ ПО id;
1
Вы также можете попробовать это
SELECT id , IF(type='p', IFNULL(amount,0), IFNULL(amount,0) * -1) как сумма ИЗ таблицы
сервер sql — использование оператора If else в операторе SQL Select
спросил
Изменено
3 года, 2 месяца назад
Просмотрено
541 тысяч раз
У меня есть оператор выбора, который возвращает 2 столбца.
ID | IDParent
Затем в моей программе я должен проверить , если IDParent < 1, затем использовать ID ELSE, использовать IDParent
Есть ли способ использовать условие If Else в SQL для возврата только одного значения?
- sql
- sql-сервер
2
вы можете использовать CASE
SELECT ..., CASE WHEN IDParent < 1 THEN ID ELSE IDPArent END AS ColumnName, ... ИЗ имя_таблицы
Здесь, используя CASE Statement
, найти результат:
выбрать (случай, когда условие1, затем результат1 когда условие2, то результат2 иначе результат3 end) как имя столбца из tablenmae:
Например:
выберите (СЛУЧАЙ, КОГДА IDParent< 1, затем ID иначе IDParent END) как имя столбца из таблицы
ВЫБЕРИТЕ РЕГИСТР, КОГДА IDParent < 1 ТОГДА ID ИНАЧЕ IDParent END AS имя столбца ОТ вашей таблицы
Вот два способа "ЕСЛИ" или "СЛУЧАЙ".
ВЫБЕРИТЕ, ЕСЛИ (ИМЯ_СТОЛБЦА = "ЗНАЧЕНИЕ", "ЗНАЧЕНИЕ_1", "ЗНАЧЕНИЕ_2") КАК ИМЯ_СТОЛБЦА ИЗ ТАБЛИЦЫ_ИМЯ;
ИЛИ
ВЫБЕРИТЕ (СЛУЧАЙ, КОГДА COLUMN_NAME = "VALUE", THEN 'VALUE_1' ELSE 'VALUE_2' END) AS COLUMN_NAME ИЗ ТАБЛИЦЫ_ИМЯ;
Запрос будет выглядеть следующим образом:
SELECT (СЛУЧАЙ, КОГДА tuLieuSo равно null или tuLieuSo='' ТОГДА 'Chưa có đĩa' ELSE 'Có đĩa' Конец) AS tuLieuSo,moTa ОТ [gPlan_datav3_SQHKTHN].[dbo].[gPlan_HoSo]
sql сервер 2012
с студент как (выберите сид,год от ( значения (101,5),(102,5),(103,4),(104,3),(105,2),(106,1),(107,4) ) как студент(сид,год) ) выберите iif(year=5,sid,year) как myCol,* от студента мой кол сид года 101 101 5 102 102 5 4 103 4 3 104 3 2 105 2 1 106 1 4 107 4
Вот пример использования CASE WHEN
SELECT СЛУЧАЙ, КОГДА А > 1, ТОГДА «Больше 1» КОНЕЦ ИЗ ТРЕУГОЛЬНИКОВ
.
ВЫБОР СЛУЧАЙ, КОГДА А > 1, ТОГДА А КОНЕЦ ИЗ ТРЕУГОЛЬНИКОВ
.
ВЫБОР СЛУЧАЙ, КОГДА A > 1 и B > 1, ТО «Больше 1» КОНЕЦ ИЗ ТРЕУГОЛЬНИКОВ
.
ВЫБОР СЛУЧАЙ, КОГДА А > 1, ТОГДА 'больше 1' ЕЩЕ 'менее 1' КОНЕЦ ИЗ ТРЕУГОЛЬНИКОВ
.
ВЫБОР СЛУЧАЙ, КОГДА А > 1, ТОГДА 'больше 1' ИНАЧЕ СЛУЧАЙ, КОГДА A >= 0, ТОГДА 'больше или равно 0' ЕЩЕ 'меньше 0' КОНЕЦ КОНЕЦ ИЗ ТРЕУГОЛЬНИКОВ;
Надеюсь, это поможет
Вы можете использовать просто if
оператор под select
запрос, как я описал ниже
if(some_condition,if_satisfied,not_satisfied)
SELECT IF(IDParent < 1,ID,IDParent) FROM yourTable ;
1
Вы также можете использовать конструкцию объединения. Я не уверен, является ли CASE обычной конструкцией SQL...
SELECT ID FROM tabName WHERE IDParent<1 OR IDParent IS NULL СОЮЗ ВЫБЕРИТЕ IDParent ИЗ tabName, ГДЕ IDParent> 1
выбрать СЛУЧАЙ, КОГДА IDParent < 1, тогда ID иначе IDParent END as colname с вашего стола
У меня есть запрос с этим результатом:
ВЫБЕРИТЕ Верхние 3
идентификатор,
Тип оплаты
ОТ dbo.