2016-10-11 29 views
0

我想創建使用SQL和紅移在下表中,但我不知道該如何去從頭如何創建一列值爲1到10的表格?

value 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

我試過基於this question

以下查詢創建這種表
SELECT ones.n + 10*tens.n + 1000 
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n), 
    (VALUES(0),(1),(2),(3),(4),(5)    ) tens(n) 
WHERE ones.n + 10*tens.n + 1000 BETWEEN 0 AND 10 

,但我得到了以下錯誤:

syntax error at or near "," 
    Position: 52 
SELECT ones.n + 10*tens.n + 1000 
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n), 
      ^
    (VALUES(0),(1),(2),(3),(4),(5)    ) tens(n) 
+0

哪個版本的sql? –

+1

對於10行,我只需運行10個插入。 – dnoeth

+2

這是因爲[redshift的不受支持的特性] –

回答

0

爲什麼不創建一個表,然後將數據插入到我T'

Create table t1(value int); 
insert into t1 values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10); 
1

我不知道你最終要做的,但你總是可以只是做union'd值的內嵌視圖,如果你需要一個SELECT語句:

SELECT t.Number 
FROM 
(
    SELECT 0 AS Number UNION 
    SELECT 1 AS Number UNION 
    SELECT 2 AS Number UNION 
    SELECT 3 AS Number UNION 
    SELECT 4 AS Number UNION 
    SELECT 5 AS Number UNION 
    SELECT 6 AS Number UNION 
    SELECT 7 AS Number UNION 
    SELECT 8 AS Number 
) AS t 
0

根據到the official documentation from amazon,VALUES list used as constant tables不支持紅移。

作爲一種變通方法,您可以創建自己的,臨時表並插入十個數字,或使用這樣的事情:

SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ... 

提示:也許你甚至可以生成大量的表,通過使用已知的方法:

SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n 
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ...) ones(n), 
    (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ...) tens(n), 
    (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ...) hundreds(n), 
    (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ...) thousands(n) 
ORDER BY 1 
相關問題