如何过滤偶数和奇数并将它们移动/复制到空列?

时间:2015-11-03 14:53:54

标签: sql postgresql

我有一个简单的问题。我有一个数字列。我需要将它们过滤为偶数和奇数,但如果数字是偶数,我需要复制或移动到同一个表中的“偶数列”。如果数字为奇数,则将其移至同一表格中的“odd-number-column”。

这是我的代码:

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 ;

2 个答案:

答案 0 :(得分:2)

如果您想要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

如果您想要更新

Sub yTest01()
For i = 72 To 10 Step -1
    Cells(i, 1).EntireRow.Insert
    Cells(i, 1).EntireRow.Insert
    Cells(i, 1).EntireRow.Insert
    Cells(i, 1).EntireRow.Insert
    Cells(i, 1).EntireRow.Insert
Next i
End Sub

答案 1 :(得分:1)

使用数组使其变得简单

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