Teradata SQL - 选择不同的返回重复行,其中一行具有空值

时间:2017-10-14 18:00:30

标签: sql select teradata

我一直在查询我正在加入多个表来引入特定主键所需的属性。我发现的是我收到的重复行基本相同,但是一行在几列中有空(?)值。我只想返回带有填充数据的行。

到目前为止,我已经检查了所有的vol表,并且没有重复项,并且在我的最终vol表之前,我有相同的不同行数。我正在加入最终vol表中其他表的新数据,并将发布该查询,但只是好奇是否有人知道为什么会发生“SELECT DISTINCT”。

我尝试使用子句“WHERE PROD_LN IS NOT NULL”,但我有一些不重复,并且没有PROD_LN的值。我也在考虑尝试“当PROD_LN为NULL而PROD_LN = PROD_LINE NOT NULL”时的情况,但不确定这是否有效。任何帮助表示赞赏!

        ACCT_NAME | GRP_ID   |  GRP_B  | ASGND_CD | PROD_LN | PROD_TYP | PLCY_TYP | FINCL | MKT_SGMT |
    ENTERPRISE A  | 00012345 |  N12345 |    1     |    ?    |     ?    |     8    |   ?   |     ?    |
    ENTERPRISE A  | 00012345 |  N12345 |    1     |    H    |   SPPO   |     8    |  ASO  |    AFG   |

1 个答案:

答案 0 :(得分:1)

我想你想要这样的东西:

select t.*
from t
qualify row_number() over (partition by ACCT_NAME, GRP_ID, GRP_B, ASGND_CD
                           order by prod_ln nulls last
                          ) = 1;

我猜这是重复的,你的意思是前四列。在任何情况下,partition by都应该是您想要唯一的列。