2015-09-05 77 views
1

我在postgres中有一個場景,我希望執行兩個字段的簡單劃分。SQL選擇:以其他狀態返回特定值

祝回答返回是1,如果回答爲小於1

SELECT a/b AS Answer 

6/4 = 1.50 
4/6 = 0.66 
4/4 = 1.00 

例如,如果計算上述被用來我想SQL用於第二計算返回值1 。

回答

1

您可以使用CASE-WHEN

SELECT CASE 
     WHEN ans < 1 
      THEN 1 
     ELSE ans 
     END AS answer 
FROM (
    SELECT a/b::REAL AS ans 
    FROM num1 
    ) t 

sqlfiddle

SELECT CASE 
     WHEN a < b 
      THEN 1 
     ELSE a/b::REAL 
     END AS answer 
FROM num1 

sqlfiddle

+0

沒有任何方法可以做到這一點,沒有大小寫? – Dercni

+1

可以使用'GREATEST',就像這樣'從num1'選擇最大的(a/b :: real,1)答案 –

1
CREATE table testdata (a int,b int); 
WITH data AS (
    INSERT INTO testdata VALUES (6,4),(4,6),(4,4) 
) 
SELECT a,b, 
    CASE WHEN a/b::REAL < 1 THEN 1 
    ELSE a/b::REAL 
    END 
FROM testdata; 
1
SELECT GREATEST(a/b, 1) AS Answer 
相關問題