我正在尝试在Teradata中创建表,但它不起作用

时间:2019-06-20 14:29:10

标签: sql teradata teradata-sql-assistant

我正在尝试使用sql在teradata中创建一个表,但我不断收到以下错误:

创建表失败。 [3707]语法错误,预期会出现类似名称或Unicode分隔标识符或“ UDFCALLNAME”关键字或“ SELECT”关键字或“(”介于“(”和“ WITH”关键字之间的

我的目标是创建一个容纳最大数据的表,在我的代码中,每个“ contract_nr”都将其命名为“ verwerkingdatum”。没有create table语句,它就可以正常工作。现在,我试图以此创建一个表。但是我得到上面的错误。

这是我的代码:

    create table mi_temp.beslagrek_saldo as
    (SEL * FROM( WITH x AS
    (
    SELECT  geld_contract_event_id, contract_nr, contract_soort_code,
    contract_hergebruik_volgnr,
    verwerking_datum,
    event_dat,
    valuta_code,
    saldo_na_muteren_orig,
    saldo_na_muteren_eur,
    saldo_na_muteren_dc_ind,
    valuta_datum,
    geld_transactie_soort_code,
    tegenrekening_nr,
    tegenrekening_naam,
    boek_datum,
    storno_ind,
    mutatie_bedrag_orig,
    mutatie_bedrag_eur,
    mutatie_bedrag_dc_ind,
    soort_overboeking,
    tegenrekening_nr_num,
    automaat_transactie_type,
    automaat_id,
    automaat_datum,
    automaat_tijd,
     ROW_NUMBER() OVER (PARTITION BY contract_nr ORDER BY         
    verwerking_datum DESC) AS RowNum
    FROM    MI_VM_Ldm.vgeld_contract_event
    WHERE verwerking_datum >= 1181201 AND verwerking_datum <= 1181231
    )
    SELECT geld_contract_event_id, contract_nr, contract_soort_code,
    contract_hergebruik_volgnr,
    verwerking_datum,
    event_dat,
    valuta_code,
    saldo_na_muteren_orig,
    saldo_na_muteren_eur,
    saldo_na_muteren_dc_ind,
    valuta_datum,
    geld_transactie_soort_code,
    tegenrekening_nr,
    tegenrekening_naam,
    boek_datum,
    storno_ind,
    mutatie_bedrag_orig,
    mutatie_bedrag_eur,
    mutatie_bedrag_dc_ind,
    soort_overboeking,
    tegenrekening_nr_num,
    automaat_transactie_type,
    automaat_id,
    automaat_datum,
    automaat_tijd
    FROM X
    WHERE RowNum = 1))

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读了您的帖子,那么您是否正在尝试筛选您的选择,以便您的rownum =1。您可以使用qualify来做到这一点。

    create table foo as (
    SELECT geld_contract_event_id, contract_nr, contract_soort_code,
        contract_hergebruik_volgnr,
        verwerking_datum,
        event_dat,
        valuta_code,
        saldo_na_muteren_orig,
        saldo_na_muteren_eur,
        saldo_na_muteren_dc_ind,
        valuta_datum,
        geld_transactie_soort_code,
        tegenrekening_nr,
        tegenrekening_naam,
        boek_datum,
        storno_ind,
        mutatie_bedrag_orig,
        mutatie_bedrag_eur,
        mutatie_bedrag_dc_ind,
        soort_overboeking,
        tegenrekening_nr_num,
        automaat_transactie_type,
        automaat_id,
        automaat_datum,
        automaat_tijd
    from
    MI_VM_Ldm.vgeld_contract_event
        WHERE verwerking_datum >= 1181201 AND verwerking_datum <= 1181231
    qualify ROW_NUMBER() OVER (PARTITION BY contract_nr ORDER BY  verwerking_datum DESC) =1
) with data;