Я пытаюсь создать таблицу в teradata, и это не работает - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь создать таблицу в teradata с помощью sql, но получаю следующую ошибку:

CREATE TABLE FAILED. [3707] Синтаксическая ошибка, ожидалось что-то вроде имени, идентификатора с разделителями Unicode, или ключевого слова «UDFCALLNAME», или ключевого слова «SELECT», или «('ween '(' и ключевого слова WITH '

).

Моя цель состоит в том, чтобы создать таблицу, которая принимает максимум данных, с именем "verwerkingdatum" в моем коде для каждого "contract_nr". Без оператора создания таблицы это работало просто отлично. Сейчас я пытаюсь создать таблицу из этого. Но я получаю ошибку выше.

Вот мой код:

    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 голосов
/ 20 июня 2019

Если я правильно читаю ваш пост, вы пытаетесь отфильтровать ваш выбор, чтобы ваш rownum = 1. Вы можете просто использовать квалификацию, чтобы выполнить это.

    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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...