如何动态创建偶数和奇数记录的列?

时间:2013-11-19 22:50:30

标签: teradata

我在Teradata中有一个查询。我想添加一个可能是VARCHAR的附加列。 应该说明所选记录是偶数还是奇数

select id, name, CASE newColumn WHEN  --- ???
from my table

喜欢这个

id  name     newColumn
1   asdf     odd
2   ts df    even
32  htssdf   odd
4   asdfsd   even
23  gftht    odd

我该怎么做

1 个答案:

答案 0 :(得分:2)

根据您的示例,我无法告诉您如何对结果进行排序。您需要定义排序顺序。我们假设你会根据id数字来做。

SELECT id, name,
ROW_NUMBER() OVER(ORDER BY id) row_id,
CASE WHEN ROW_NUMBER() OVER(ORDER BY id) MOD 2 = 0 THEN 'Even' ELSE 'Odd' END newColumn
FROM my table

row_id根据升序排序的id字段逐步分配。然后使用MOD函数确定在将数字除以值后是否有余数(在本例中为2)。结果如下所示:

id    name      row_id    newColumn
1     asdf      1         Odd
2     ts df     2         Even
4     asdfsd    3         Odd
23    gftht     4         Even
32    htssdf    5         Odd