在Postgres中有效地将定义映射到列?

时间:2018-05-18 12:22:26

标签: sql postgresql

我有一张原始表(数亿行,但我只会处理1天,不到一百万行),其中的列数可以捕获事件持续的秒数。

dimensions, status_1_time, status_2_time, ..., status_10_time

问题在于状态的定义并不统一。试图使它们标准化在历史上并不成功。

是否有一种有效的方法可以使用查找表连接回原始表,人们会将状态代码映射到标准定义?因此,每一行都会指示代表该标准状态名称的相应状态代码。

dimensions, lunch_time, paid_training_time, ..., break_time
                 2,             0,          ...,     10
                 1,             4,          ...,      2

我天真的测试方法是使用CASE语句(10个代码和10个不同的状态列使查询非常冗长且有点重复)。

(CASE 
  WHEN lunch_time = 1 THEN status_1_time
  WHEN lunch_time = 2 THEN status_2_time
  ...
  WHEN lunch_time = 10 THEN status_time
END) AS lunch_break_time

有人建议采用更好的方法或更有效的方法吗?最后,我想发送一个包含“午休时间”,“付费培训时间”,“休息时间”等列的报告,并省略原始status_time列。

0 个答案:

没有答案