Выберите Отрицательные значения, только если они существуют в SQL Server

Вопрос: Я новичок в сервере sql. У меня возникла проблема при выборе значений для отчета. У меня есть следующие столбцы: name, snap, current, percent. Я хочу выбрать только отрицательные значения, если существует в столбце "%", если не выбрать только значения +ve. например: если у меня есть -1, -1 0, 0, 10, тогда он должен выбрать

Вопрос:

Я новичок в сервере sql. У меня возникла проблема при выборе значений для отчета. У меня есть следующие столбцы:

name, snap, current, percent.

Я хочу выбрать только отрицательные значения, если существует в столбце “%”, если не выбрать только значения +ve.

например:

если у меня есть -1, -1 0, 0, 10, тогда он должен выбрать только -1, -1 0.

Я попробовал следующий запрос, но он дал значения +ve и -ve.

selectname, snap, current, percent where percent = CASE WHEN percent < 0 then percent when percent > 0 then percent

Я не знаю, как использовать, если еще в том условии. Может кто-нибудь мне помочь? Заранее спасибо.

Лучший ответ:

Вы можете использовать IF EXISTS для проверки состояния, а затем получить желаемый результат

IF EXISTS(SELECT * FROM TABLENAME WHERE percent < 0) BEGIN SELECT [name], [snap], [current], [percent] FROM TABLENAME WHERE [percent] < 0 END ELSE BEGIN SELECT [name], [snap], [current], [percent] FROM TABLENAME WHERE [percent] > 0 END Ответ №1

Вы можете попробовать использовать UNION ALL для разделения двух условий. Из-за их противоположности только одна часть запроса вернет строки.

SELECT [name], [snap], [current], [percent] FROM Table1 WHERE EXISTS (SELECT * FROM Table1 WHERE [percent] < 0) AND [percent] < 0 UNION ALL SELECT [name], [snap], [current], [percent] FROM Table1 WHERE NOT EXISTS (SELECT * FROM Table1 WHERE [percent] < 0) AND [percent] > 0

SQLFiddle DEMO

Демо с неотрицательными значениями

Оцените статью
Добавить комментарий