Вопрос:
Я новичок в сервере 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