2014-11-28 5 views
0

У меня есть 2 SQL Присоединяйтесь прообразами (один с использованием только SELECT, другие с помощью SELECT и WHERE) и у меня есть ошибка синтаксиса около OVER при подаче следующего кода:SAS DI Ошибка 22-232 в ROW_NUMBER() OVER (PARTITION BY строительства

select row_number() over 
     (
     partition by t0.A order by t0.B DESC 
     ) nub, 
     t0.C, 
     t0.D 
from t0 

Я новичок в SAS DI Studio, но этот код работает в Teradata, где я буду неправильно?

ответ

1

во-первых, я могу сказать, почему эта ошибка происходит, но она может упасть кому-то, кто имеет доступ к DI Studio, чтобы полностью ответить на него. Я сделал все возможное, чтобы объяснить ниже. Не стесняйтесь c omment.

Конструкция ROW_NUMBER() и PARTITION BY в Teradata SQL не поддерживается в SAS SQL. Чтобы разместить этот вид синтаксиса в DI Studio, вам нужно использовать «pass-through» SQL. Синтаксис в Base SAS будет выглядеть следующим образом:

PROC SQL; 
    CONNECT TO TERADATA (/* Insert connection details */); 
    CREATE TABLE sas_table AS 
    SELECT * FROM CONNECTION TO TERADATA (
    /* Insert your Teradata SQL here */ 
); 
    DISCONNECT FROM TERADATA; 
QUIT; 

Синтаксис выше будет подключаться к Teradata, а затем создать таблицу SAS под названием sas_table на основе результатов запроса Teradata SQL.

В зависимости от вашей версии DI Studio может существовать определенное преобразование, доступное для Pass Through SQL.

 Смежные вопросы

  • Нет связанных вопросов^_^