2014-08-27 42 views
1

我有一個表包含多列,這些中,兩列我感興趣的。得到基於2列的值的列SQL

這2列可以有一個像(p,p)(a,p)(p,a)(a,a)值。

根據這些列中總共出現的值,我想分別顯示第三列爲1,0.5,0.5,0

如表:

column1 column2 column3 
    p  p  1 
    p  a  0.5 
    a  p  0.5 
    a  a  0 

如何才能做到這一點。我嘗試了很多,但無濟於事。 plz幫助。

+0

承擔案件 – 2014-08-27 07:35:51

+0

我做了一下。但是可以在stmt的情況下測試2列值。 lemme look – 2014-08-27 07:36:56

+0

儘管大多數情況下這個問題可能不相關,但您應該始終爲您正在使用的DBMS添加適當的標記('postgresql','oracle',...) – 2014-08-27 07:40:13

回答

2

這是使用CASE語句的示例,該語句檢查兩列中的值並在第三列中返回所需的值。

CASE WHEN column1 = 'p' AND column2 = 'p' THEN 1 
    WHEN (column1 = 'a' AND column2 = 'p') OR (column1 = 'p' AND column2 = 'a') THEN 0.5 
    WHEN column1 = 'a' AND column2 = 'a' THEN 0 END AS Column3 
1
SELECT column1, column2, 
    CASE 
     WHEN column1 = p AND column2 = p THEN 1 
     WHEN column1 = a AND column2 = a THEN 0 
     ELSE 0.5 
     END AS column3 
FROM Production.Product 

在這裏你去