Teradata 如何动态地为偶数和奇数记录创建列?
我有一个关于Teradata的查询。我想添加一个额外的列,它将是一个VARCHAR。 它应该说明所选记录是偶数还是奇数Teradata 如何动态地为偶数和奇数记录创建列?,teradata,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 我该怎么做呢?根据您的示例,
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
我该怎么做呢?根据您的示例,我不知道您是如何对结果进行排序的。您需要定义排序顺序。让我们假设您将根据
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
行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
根据你的例子,我不知道你是如何对结果进行排序的。您需要定义排序顺序。让我们假设您将根据
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
行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
根据你的例子,我不知道你是如何对结果进行排序的。您需要定义排序顺序。让我们假设您将根据
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
行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
根据你的例子,我不知道你是如何对结果进行排序的。您需要定义排序顺序。让我们假设您将根据
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
行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
+谢谢你的回复。我知道这个
MOD
但是,我已经有了id
列,并且它不是递增分配的。我的表正是上面的表。在SQL中无法为数据分配奇数/偶数,因为没有规则如何分配它(除非有order BY,否则行不会按特定顺序返回)。当然,如果这是您编写的应用程序,那么在客户端可能很容易计算得到。+1感谢您的回复。我知道这个MOD
但是,我已经有了id
列,并且它不是递增分配的。我的表正是上面的表。在SQL中无法为数据分配奇数/偶数,因为没有规则如何分配它(除非有order BY,否则行不会按特定顺序返回)。当然,如果这是您编写的应用程序,那么在客户端可能很容易计算得到。+1感谢您的回复。我知道这个MOD
但是,我已经有了id
列,并且它不是递增分配的。我的表正是上面的表。在SQL中无法为数据分配奇数/偶数,因为没有规则如何分配它(除非有order BY,否则行不会按特定顺序返回)。当然,如果这是您编写的应用程序,那么在客户端可能很容易计算得到。+1感谢您的回复。我知道这个MOD
但是,我已经有了id
列,并且它不是递增分配的。我的表正是上面的表。在SQL中无法为数据分配奇数/偶数,因为没有规则如何分配它(除非有order BY,否则行不会按特定顺序返回)。当然,如果是您编写的应用程序,那么在客户端可以很容易地计算出这一点。