2

我是 sql 服务器的新手。我在选择报告值时遇到了一些问题。我有以下列:

name, snap, current, percent.

如果仅选择 +ve 值,我只想选择负值(如果存在于“百分比”列中)。

例如:

如果我有 -1、-10、0、10,那么它应该只选择 -1、-10。

我尝试了以下查询,但它同时给出了 +ve 和 -ve 值。

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

我不知道如何在 where 条件下使用 if else。谁能帮我吗 ?提前致谢。

4

2 回答 2

3

您可以使用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
于 2013-07-05T18:17:01.497 回答
2

您可以尝试使用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 演示

具有非负值的演示

于 2013-07-05T18:20:21.377 回答