2010-06-21 60 views
0

我想使用任意數字的列表作爲選擇的一種輸入。當然,選項A是創建一個僅包含值的臨時表(例如,1,2,3)。Teradata SQL:選擇一個文字

我希望你們大家知道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 

再一次,我可以從表中獲取輸入,但我不喜歡,如果沒有必要。大師,請加入。

TIA。

+0

我不確定真正被問到的是什麼。你能澄清一點點嗎?你對加入數字表不感興趣,對嗎?您是否正在選擇x和y之間的值?或者你正在尋找創建一個列表,只拉回匹配(IN)的值?道歉緻密。 – 2010-06-21 20:44:16

回答

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 
; 

或ORDER BY列

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 
; 

;