2010-06-21 3 views
0

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

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

Пусть утверждение как:

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

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

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

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

TIA.

+0

Я не уверен, что действительно спрашивают. Вы можете немного пояснить? Вам не интересно присоединяться к таблице чисел, правильно? Вы хотите выбрать значения BETWEEN x и y? Или вы хотите создать список и только отменить значения, соответствующие (IN)? Извиняется за то, что он плотный. –

ответ

1

Вы, вероятно, найдете успех, используя функцию агрегирования окна 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 
; 

;

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