Создание псевдонима и установка типа данных для вновь созданного столбца без необходимости повторной проверки псевдонима - PullRequest
0 голосов
/ 21 сентября 2019

ИСПОЛЬЗОВАНИЕ SAS EG 7.13

У меня есть таблица, в которой я создаю несколько столбцов псевдонимов, которые составлены из объединенных строк, собранных из других полей.У меня возникают проблемы с назначением псевдонимных столбцов типа данных и длины без необходимости повторного сопоставления столбца, что вызывает предупреждения в SAS, так как столбцы перечисляются дважды в операторе SELECT.Есть ли способ создать столбец с псевдонимами и назначить ему тип данных и длину (например, varchar (35)) без необходимости дважды перечислять столбец?

Я пробовал следующее

CONCAT('SCCF ',c.CLM_ITS_SCCF_NBR) AS CLM_ITS_SCCF_NBR_FORMATTED(varchar(35))

CONCAT('SCCF ',c.CLM_ITS_SCCF_NBR) AS varchar(35) CLM_ITS_SCCF_NBR_FORMATTED

Единственное, что сработало, это:

 CONCAT('SCCF ',c.CLM_ITS_SCCF_NBR) AS CLM_ITS_SCCF_NBR_FORMATTED, 
 CAST(CLM_ITS_SCCF_NBR_FORMATTED AS varchar(35)),

Но опять же, это предупреждение в SAS, которое не соответствует стандартам ведомства.

Create Table XREF as SELECT * FROM CONNECTION TO TERADATA(
      SELECT
        c.COL1,
        c.COL2,
        CONCAT('SCCF ',c.COL1) AS CLM_ITS_SCCF_NBR_FORMATTED,
            CAST(CLM_ITS_SCCF_NBR_FORMATTED AS varchar(35)),
        CONCAT(COL1,',',c.COL2) AS XREF_CAK_CONCAT,
            CAST(XREF_CAK_CONCAT AS varchar(100))
    FROM EDW_ALLPHI.CLM c
INNER JOIN &ID..MY_XREF x on
x.THIS_COL = c.THAT_COL
    );

Это предупреждения SASвыдача.

WARNING: Variable CLM_ITS_SCCF_NBR_FORMATTED already exists on file WORK.XREF.

WARNING: Variable XREF_CAK_CONCAT already exists on file WORK.XREF.

1 Ответ

2 голосов
/ 21 сентября 2019

Вы на самом деле не спрашиваете об алиасах в этом вопросе.Вместо этого вы спрашиваете о фактической переменной NAMES, которую вы генерируете.Ваш запрос Teradata выбирает 6 столбцов (переменных).Два из них вы выбираете как есть, поэтому их имена останутся без изменений, два вы назначаете имена, а два вы вообще не назначаете никаких имен.

Я удивлен, что он запускается вообще, но из сообщения об ошибке похоже, что Teradata назначает функцию CAST (), вызывающую имя переформатируемой переменной.Просто дайте этим двум столбцам разные имена.

SELECT
    c.COL1
  , c.COL2
  , CONCAT('SCCF ',c.COL1) AS CLM_ITS_SCCF_NBR_FORMATTED
  , CAST(CLM_ITS_SCCF_NBR_FORMATTED AS varchar(35)) AS CLM_ITS_SCCF_NBR_FORMATTED_RAW
  , CONCAT(COL1,',',c.COL2) AS XREF_CAK_CONCAT
  , CAST(XREF_CAK_CONCAT AS varchar(100)) AS XREF_CAK_CONCAT_RAW

Если вместо этого вы хотите создать только четыре переменные, добавьте функцию CAST () в определения этих столбцов (переменных).

SELECT
    c.COL1
  , c.COL2
  , CAST(CONCAT('SCCF ',c.COL1) AS varchar(35)) AS CLM_ITS_SCCF_NBR_FORMATTED
  , CAST(CONCAT(COL1,',',c.COL2) AS varchar(100)) AS XREF_CAK_CONCAT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...