2015-11-03 70 views
0

我有一個簡單的問題。我有一個數字列。我需要將它們過濾爲偶數和奇數,但是如果數字是偶數,則需要將它複製或移動到同一個表中的「偶數列」。如果數字是奇數,則將其移動到同一個表中的「奇數列」。如何篩選偶數和奇數並將其移動/複製到空列?

這是我的代碼:

select distinct all_numbers, even-number-column, odd-number-column 
case when all_numbers%2=0 
    then UPDATE my_table SET even-number-column = all_numbers 
    else UPDATE my_table SET odd-number-column = all_numbers 
    end 
from my_table ; 
+0

對於我來說,如果您只想*選擇*值或想要(永久)**更改**(=更新)表格中的值,目前還不清楚。 –

+0

我想永久改變它。所以我會有三列。 1.all_numbers,2. even,3. odd。 –

回答

0

如果你想有一個SELECT

select 
    distinct all_numbers, 
    CASE 
     WHEN when all_numbers%2 = 0 THEN all_numbers 
     ELSE 0 -- or NULL 
    END as even-number-column, 
    CASE 
     WHEN when all_numbers%2 = 1 THEN all_numbers 
     ELSE 0 -- or NULL 
    END as odd-number-column 
from my_table ;` 

如果你想更新

UPDATE my_table 
SET 
    even-number-column = CASE 
          WHEN when all_numbers%2 = 0 THEN all_numbers 
          ELSE even-number-column -- or change for 0 or NULL 
         END, 
    odd-number-column = CASE 
          WHEN when all_numbers%2 = 1 THEN all_numbers 
          ELSE odd-number-column -- or change for 0 or NULL 
         END 
+0

Tnx很多胡安。它工作得很好。 –

0

使用數組,使之簡單

update t 
set 
    odd = (array[null, all_numbers])[all_numbers % 2 + 1], 
    even = (array[all_numbers, null])[all_numbers % 2 + 1] 
+0

'update t'中的'from'是什麼? –

+0

@Juan當然,糾正。 –

+0

@Juan感謝您的編輯。當我嘗試一次完成2個任務時會發生這種情況。 –