Teradata SQL: выберите литерал - PullRequest
0 голосов
/ 21 июня 2010

Я хочу использовать список произвольных чисел как своего рода ввод для выбора. Вариант A, конечно, заключается в создании временной таблицы, которая содержит только значения (например, 1,2,3).

Я надеюсь, что вы, ребята, знаете, что такое Option> A.

Предположим, что утверждение выглядит так:

select Fx,
XXXXXX as Foo
from MyTable
where MyTest depends on each XXXXXX

Так что, если бы я мог волшебным образом сделать XXXXXX списком значений (1,2,3), у меня был бы такой набор результатов:

    My val | Foo
    -------+---
       cat | 1
     mouse | 2
cheesecake | 3

Опять же, я мог бы получать исходные данные из таблицы, но я предпочитаю не делать этого, если это не нужно. Гуру, пожалуйста, присоединяйтесь.

ТИА.

1 Ответ

1 голос
/ 24 июня 2010

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

Случайный порядок

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY 1)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

ИЛИ Порядок по столбцу

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

ИЛИ Разделдругим столбцом для перезапуска последовательности

SELECT CALENDAR_DATE
     , YEAR_OF_CALENDAR
     , ROW_NUMBER()
       OVER (PARTITION BY YEAR_OF_CALENDAR
             ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2009-11-01' AND DATE 
;

;

...