串联数字会返回不同的值

时间:2018-12-28 21:24:08

标签: sql concatenation teradata sqldatatypes

我的代码输出显示了基于代码没有意义的两种不同的情况。我会尽力说明,因为似乎无法以引导模式从计算机上载图片……

state      cvmo       unique_code     total
IL         201701      95316          80,162.31
IL         201701      91304          21,315.69
IL         201,701     90035          63,989.21
IL         201701      96735          54,557.76

因此您可以看到cvmo列具有两个不同的值201701和201,701,但我不确定为什么。我为IL的总和所获得的输出大约是应有的两倍,因此我不知道总数是否因此而乘以2。另外,每个唯一代码仅与201701或201,701配对。

我有一个成员表,其中cvmo直接从数据库中获取,并且都采用201701的形式。

接下来,在总表上使用以下代码:

,case when extract(month from svc_from_dt) < 10
        then trim(extract(year from svc_from_dt)) || '0' || trim(extract(month from svc_from_dt))
        else trim(extract(year from svc_from_dt)) || trim(extract(month from svc_from_dt))
        end as cvmo
/*This is also in the form 201701*/

在cvmo和唯一成员键上加入成员表时,将获得上面的输出。

1 个答案:

答案 0 :(得分:1)

我不知道是什么,但是要获取YYYYMM的计算太复杂了,请改用此方法:

to_char(svc_from_dt, 'yyyymm') -- 'YYYYMM' string